PHP胡子.隐式迭代器:如何获取当前值的键(数字php数组)

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP胡子.隐式迭代器:如何获取当前值的键(数字php数组)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有像这样的 PHP数组:
$a = array (
    99 => 'Something1',184 => 'Something2',);

密钥提供重要信息 – 它可以是一些常数值,ids e.t.c

那我怎样才能从模板中获取当前元素的关键字.
例如:

{{#data}}

{.} - IT is current value,but I need key also.

{{/data}}

在我们的系统中,这些类型的数组太多,并且以前很难对它们进行重新解析.有什么更好的解决方案?
非常感谢你!

在Mustache中迭代关联数组是不可能的,因为Mustache将其视为“哈希”而不是可迭代列表.即使您可以遍历列表,您也无法访问密钥.

为此,您必须准备数据.在将数据传递给Mustache之前,可以使用foreach循环执行此操作,或者可以通过将数组包装在“PResenter”中来完成.像这样的东西应该做的伎俩:

<?PHP

class IteratorPresenter implements IteratorAggregate
{
    private $values;

    public function __construct($values)
    {
        if (!is_array($values) && !$values instanceof Traversable) {
            throw new InvalidargumentException('IteratorPresenter requires an array or Traversable object');
        }

        $this->values = $values;
    }

    public function getIterator()
    {
        $values = array();
        foreach ($this->values as $key => $val) {
            $values[$key] = array(
                'key'   => $key,'value' => $val,'First' => false,'last'  => false,);
        }

        $keys = array_keys($values);

        if (!empty($keys)) {
            $values[reset($keys)]['first'] = true;
            $values[end($keys)]['last']    = true;
        }

        return new ArrayIterator($values);
    }
}

然后只需将数组包装在Presenter中:

$view['data'] = new IteratorPresenter($view['data']);

您现在可以在迭代数据时访问键和值:

{{# data }}
    {{ key }}: {{ value }}
{{/ data }}

脚本宝典总结

以上是脚本宝典为你收集整理的PHP胡子.隐式迭代器:如何获取当前值的键(数字php数组)全部内容,希望文章能够帮你解决PHP胡子.隐式迭代器:如何获取当前值的键(数字php数组)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。