【问题标题】:How to use string values from one array as indexes for another array in PHP如何使用一个数组中的字符串值作为 PHP 中另一个数组的索引
【发布时间】:2014-05-13 19:33:37
【问题描述】:

我已将一个字符串拆分为数组,并给出一个分隔符。因此,创建的这个新数组将包含 values,我希望将其用作另一个给定数组的 indexes

遇到这样的情况:

// my given array
$array['key1']['key2']['a_given_key']['some_other_given_key'] = 'blablabl';

// the value of my given array
$value = $array['key1']['key2']['a_given_key']['some_other_given_key'];

$string = "key1;key2";
$keys = explode(";", $string);

我想动态地(在我的 PHP 脚本执行期间)调用给定数组的值,但是,使用数组 $keys 的所有值作为 indexes,此外还附加我给定数组的索引 ['a_given_key']['some_other_given_key']

我希望我已经清楚了。
非常感谢。

【问题讨论】:

  • 你想构建一个嵌套级别由$keys的长度动态确定的数组?
  • 向我们展示您的代码 - 您如何尝试实现您想要的目标
  • 我有那个'$keys'。我想使用所有这些值作为“$array”中的索引来调用“$array”中的特定值。
  • 那么什么不起作用?根据您的最后评论(至少我理解您的问题的方式),您已经有了解决方案。请解释什么不起作用。
  • 我想动态地放置索引。我不想手动将它们写成[$keys[0]][$keys[1]] 等...

标签: php arrays reference associative-array


【解决方案1】:

要使其发挥作用,您必须使用参考。下面的代码应该可以按预期工作:

<?php

    $string = "key1;key2;key3;key4";
    $keys = explode(";", $string);


    $array['key1']['key2']['key3']['key4']['a_given_key']['some_other_given_key'] = 'blablabl';

    $ref = & $array;                               

    for ($i=0, $c = count($keys); $i<$c ; ++$i) {   
        $ref = &$ref[$keys[$i]];       
    }

    echo $ref['a_given_key']['some_other_given_key'];

    $value = $ref['a_given_key']['some_other_given_key'];

    echo $value;


?>

我想补充一点,在使用参考后,您应该使用以下方法取消设置:

unset($ref);

如果您不这样做并且稍后运行许多行,例如 $ref = 2;,它将修改您的源数组,因此您必须记住在它不再使用后取消设置引用。

【讨论】:

  • 你做了什么这正是我要找的!谢谢! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 2020-07-12
  • 2017-01-11
  • 1970-01-01
相关资源
最近更新 更多