【问题标题】:Using the Value of a String as an Array Name in PHP在 PHP 中使用字符串的值作为数组名称
【发布时间】:2018-02-24 18:46:18
【问题描述】:

我正在尝试使用我编写的类方法设置 HTML nameid 属性的值。这个想法是name 属性的值最终是这样的:name="key[field_name]"

如果我硬编码key 使其成为name="key[' . $field_name . ']",我就有这个工作,但是这违背了让班级完成所有繁重工作的目的,因为这是针对 WordPress 自定义帖子类型的。

因此,我创建了一个类参数post_type_key,它将包含该值。但是当我去合并它们时,它不起作用,我得到一个name="k"

我看了看,唯一能快速找到的解决方案是使用eval(),我绝对不想这样做。

以下是相关代码:

$post_key = $this->post_type_key;

if ( $field_type == 'text' ) {
   $meta_field .= '<input type="' . $field_type . '" name="'.
   $post_key[$field_id_name ] . '" id="' . $field_id_name . 
   '" value="' . $meta[$field_id_name][0] . '" />';
}

【问题讨论】:

  • $this-&gt;post_type_key 的值是多少(最好使用var_dump)? $field_id_name 的值是多少(相同)?
  • @Jeto 分别以string(3) "key"string(10) "first_name" 回归。
  • 因此$post_key(您从$this-&gt;post_type_key 分配)不是一个数组,而是一个字符串。所以$post_key[$field_id_name] 没有多大意义(它返回字符串“key”的第一个字符,因为$field_id_name 被评估为0)。
  • 但是有没有办法使用$post_key 的值作为名称来创建一个数组?
  • 如果我理解正确的话,这很简单。在 post_key 前加上两个美元符号:$$post_key[$field_id_name].

标签: php wordpress class


【解决方案1】:

我想通了。我不得不使用{} 来包含变量名。所以:

name="'. $this->post_type_key[$field_id_name] . '"

成为:

name="'. "{$post_key}" . '[' . $field_id_name . ']"

检查了 HTML,它工作正常,WordPress 错误日志中清除了我收到的无效字符串偏移消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多