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

2024-01-19

如果我有这样的 php 数组:

 $a = array (
    99 => 'Something1',
    184 => 'Something2',
 );

键表示重要信息 - 它可以是一些常量值、id 等

那么如何从模板中获取当前元素的键。 例如:

{{#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 }}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 小胡子和哈姆尔

    我有这个 haml mustache 模板 data ok items item b ID id item items data 我有Illegal nesting nesting within plain text is illegal
  • 用小胡子迭代无键数组?

    我有一个看起来像这样的数组 Object actions Array 2 comments Object created time 2012 06 14T17 45 34 0000 from Object id 2388163605 101
  • href 内有小胡子

    我有这样的 JSON something http something com 和 HTML 像这样 a href something something a 当我应用 Mustache 时 我得到 a href 7B 7Bsomethin
  • HandleBars .Net If 比较

    我使用 Handlebars NET 作为我的邮件模板 因此我在服务器端宽度 ASP NET MVC 上生成模板 我需要这样的比较 但这不起作用 我能做些什么 Product ProdType is a enum property if P
  • Mustache 在服务器 (rails) 和客户端 (javascript) 上渲染

    是否有关于在服务器 使用 Rails 和客户端 使用 javascript 上使用 Mustache 最佳实践的文档 hello world mustache Hello planet some other file
  • 如何从自定义车把助手访问请求对象

    我正在使用带有 Node js 和 Express 的车把 并且我有一个用于温度显示的自定义注册助手 我希望能够从页面 URL 访问查询参数 帮助器背后的概念是根据是否自动处理华氏度到摄氏度的转换 tempFormat F or tempF
  • 如何在 Twig 模板中使用 Mustache?它们都有相同的标签分隔符

    我在我的项目中使用 Twig 它使用这些标签 name 我也想将 Mustache 包含在我的项目中 但小胡子也使用相同的标签 name 所以存在冲突并且没有任何效果 Mustache 在他们的文档中提供的解决方案当然不起作用 因为我必须输
  • 如何从handlebars.js部分加载多个模板

    有没有一种简单的方法可以使用handlebars js 加载包含多个模板的部分 就像使用mustache js 和来自 jonnyreeves 的 jQuery 插件 https github com jonnyreeves jquery
  • PHP 胡子。隐式迭代器:如何获取当前值的键(数字php数组)

    如果我有这样的 php 数组 a array 99 gt Something1 184 gt Something2 键表示重要信息 它可以是一些常量值 id 等 那么如何从模板中获取当前元素的键 例如 data it is current
  • 带有嵌套对象数组的胡子模板

    需要一点帮助来弄清楚为什么我的 Mustache 模板无法正确呈现 我很困惑为什么以下不起作用 我确信这是我的一个小错误或者其他什么 var tableRows name name1 values 1 2 3 name name2 valu
  • 如何使用 Mustache.js 制作客户端 I18n

    我有一些静态 html 文件 想要通过 Mustache js 进行客户端修改来更改其中的静态文本 看来这可能是 Twitter 在 github 上的 Mustache 扩展 https github com bcherry mustac
  • Java 框架中的单页 Web 应用程序或示例? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有人看过 Java 中的示例或执行过以下操作 http duganchen ca single page web app archit
  • Mustache.js - 如何连接事件?

    我正在考虑将 Mustache js 用于我正在开发的一个小项目 我还没有看到答案的一件事是 哪种是连接事件的最佳方法 我想要创建一个带有小胡子的树形菜单 但我不认为哪种是将事件连接到每个节点的最佳或最干净的方法 Mustache是 一个模
  • 我如何将小胡子中的变量大写

    我的小胡子模板中有一个名为 type 的变量 我想使用标题大小写将 type 的值大写 这可能吗 考虑到该类型不是网页上显示的类型 它存储一个值 type 你可以将它包裹在一个span并使用CSS CSS capitalize text t
  • 从外部 html 文件加载handlebars.js 模板没有显示任何内容

    这个问题有点考验我的 JS 技能 所以我可能会像白痴一样解释它 这是我的 JavaScript 用于从服务器获取 json 并尝试将其推送到模板中 Server Interface Start Access the web api for
  • 在 require.js AMD 中添加 Mustache Temple 到 require

    在 js 中 您可以在定义模块时在 require 部分加载 html 模板 例如 模板文件 test html 在模块中 define template test function rest of code 但这会在获取文件名附加的文件时
  • 如何为每个有小胡子的javascript使用?

    我有一些 json 对象 其中一些对象内部还有一些其他对象 如果我只留下其中没有其他 obj 的 json obj 然后应用模板 一切都会顺利 我得到 在本例中为 3 li 元素 但如果我获取原始的 json obj 结果会有点复杂 我相信
  • 类型错误:尝试在 Express JS 中使用 Mustache 时,this.engine 不是函数

    作为我在 NodeJS 上尝试的第一件事 我正在构建一个简单的应用程序 它显示一个 HTML 页面 告诉访问者他们的 IP 地址 它看起来是这样的 var express require express var app express ap
  • 如何在 jquery 中获取 406 错误(不可接受)

    我正在 my js 中进行错误处理 其中我对其他服务器进行跨域调用 对于动态 HTML 模板 我正在使用 Mustache js getJSON url function data textStatus xhr each data func
  • Mustache javascript:如何处理布尔值

    我有一个 JavaScript 对象obj键的值可以是true or false 该值被传递给 Mustache 模板 JavaScript 对象 obj like true or false 模板 span like span 现在我希望

随机推荐

  • 网络摄像机RTSP地址

    我有 IP 摄像头 但我不知道它是 RTSP 流的完整正确 URL 地址 仅 RTSP 设置中有端口 但据我了解 192 168 1 132 554 还不够 VLC 说找不到 rtsp 流 如何找出正确的 url 地址 如何找出正确的 ur
  • 复合主键是否为N-M关系?

    假设我们有 3 个表 实际上我现在有 2 个表 但这个例子可能会更好地说明这个想法 Person ID int 主键 名称 nvarchar xx Group ID int 主键 名称 nvarchar xx Role ID int 主键
  • Android Java:关闭屏幕

    我正在制作一个使用接近传感器打开和关闭屏幕的应用程序 接近代码已完成 但我在使用屏幕控件时遇到了麻烦 我读过我应该使用 PowerManager manager PowerManager getSystemService Context P
  • 为什么 MFMailComposeViewController 返回 MFMailComposeResultFailed?

    我的应用程序遇到一个奇怪的问题 我需要您的帮助 我正在使用 MFMailComposeViewController 发送带有附件数据的电子邮件 附件是 PDF CSV 或 XLS 文件 还可以将 ZIP 文件添加到邮件中 在大多数情况下一切
  • 关闭窗口前Socket.IO断开连接问题

    我试图阻止客户端与服务器断开连接 因此 在用户关闭打开应用程序的窗口之前 我会执行以下操作 window bind beforeunload function return Close the app 但问题是 无论用户选择离开还是留在应用
  • Groovy Node.depthFirst() 返回节点和字符串列表?

    我希望有人能指出我在这里遗漏的一些明显的东西 我觉得我已经这样做了一百次了 出于某种原因 今晚 由此产生的行为让我陷入了困境 我正在从公共 API 读取一些 XML 我想从某个节点中提取所有文本 body 内的所有内容 其中还包括各种子节点
  • Java 并发收集少写多读

    我想使用基于比较器的键值映射 这将进行读取和罕见的写入操作 通过调度程序每 3 个月一次 集合的初始加载将在应用程序启动时完成 另请注意 写入将 将单个条目添加到地图 不会修改地图的任何现有条目 ConcurrentSkipListMap
  • xcode 5 语法高亮不适用于单元测试文件

    我已经为我的项目设置了单元测试 最初 我在编译测试文件期间遇到了错误 最后我解决了它 我的测试现在正在工作 现在的问题是语法突出显示不适用于测试文件 仅适用于此 我尝试按照这个answer https stackoverflow com a
  • RegExp 中的混乱 不情愿的量词?爪哇

    为什么我得到输出ab对于以下带有 Relucutant 量词的正则表达式代码 Pattern p Pattern compile abc Matcher m p matcher abcfoo while m find System out
  • 测试内部使用 MySQL 特定查询的代码的正确方法是什么

    我正在收集数据并使用 Java 将这些数据存储在 MySQL 数据库中 此外 我使用 Maven 来构建项目 使用 TestNG 作为测试框架 使用 Spring Jdbc 来访问数据库 我实现了一个 DAO 层 它封装了对数据库的访问 除
  • 使用 JDBC 创建 PostgreSQL 触发器

    我正在尝试创建一个 PostgreSQL 触发器Play2 0 http www playframework org 数据库演化脚本 sql代码相对简单并且在pgAdminIII中运行良好 CREATE OR REPLACE FUNCTIO
  • SOLID 开放/封闭原则如何适应依赖注入和依赖倒转

    我开始应用 SOLID 原则 但发现它们有点矛盾 我的问题如下 我对依赖倒置原则的理解是类应该依赖于抽象 实际上 这意味着类应该从接口派生 到目前为止一切都很好 接下来我对开放 封闭原则的理解是 在某个截止点之后 您不应该更改类的内容 而应
  • 正则表达式用空格替换字符串中的特殊字符? ASP.NET C#

    string inputString 1 10 EP Sp arrowha wk XT R TR 2 4GHz Red Characters Collection lt gt string outputString 1 10 EP Sp a
  • 计算列日期范围内每个日期出现的行数

    我有一张包含如下数据的表格 Group Start Date End Date A 01 01 01 01 03 01 A 01 01 01 01 02 01 A 01 03 01 01 04 01 B 01 01 01 01 01 01
  • `webdriver.Chrome()` 使用 Python 在 Selenium 中获取哪个版本的 chrome 驱动程序?

    我知道webdriver Chrome 下面可以获取 chrome 驱动程序 但我不知道它获取的是哪个版本的 chrome 驱动程序 因为the doc https selenium python readthedocs io 没有任何这样
  • SCNNode 未显示在 ARFrame 的 captureImage 中

    我将 SCNNode 添加到 ARSCNView func renderer renderer SCNSceneRenderer nodeFor anchor ARAnchor gt SCNNode guard let faceAnchor
  • C# HtmlDecode 仅特定标签

    我有一个大的 htmlencoded 字符串 我只想解码特定的白名单 html 标签 有没有办法在 c 中执行此操作 WebUtility HtmlDecode 可以解码所有内容 我正在寻找将通过以下测试的 DecodeSpecificTa
  • 我们可以使用 double 来存储货币字段并使用 BigDecimal 进行算术吗

    我知道 double float 的问题 建议使用 BigDecimal 而不是 double float 来表示货币字段 但 double float 更有效且节省空间 那么我的问题是 在 Java 类中使用 double float 来
  • 如何从特定数字手动启动 $(Rev:r) 计数器?

    比如说 我有一个版本已经是 1 0 15 的库 我将构建过程迁移到 Azure DevOps 并希望自动递增构建号 因此 在构建管道选项中 我将构建编号格式设置为1 0 Rev r 但现在它开始在 1 0 1 进行构建 那么我如何人为地将其
  • PHP 胡子。隐式迭代器:如何获取当前值的键(数字php数组)

    如果我有这样的 php 数组 a array 99 gt Something1 184 gt Something2 键表示重要信息 它可以是一些常量值 id 等 那么如何从模板中获取当前元素的键 例如 data it is current