在PHP中将字符串转换为对关联数组索引的引用

在PHP中将字符串转换为对关联数组索引的引用,php,Php,我有这样一个数组: [0] => [basketball][player] [1] => [basketball][threes][player] [2] => [basketball][home][leaders][player] [3] => [basketball][away][leaders][player] $array = ..... // the big array $str = "[basketball][player]"; $keys = explod

我有这样一个数组:

[0] => [basketball][player]
[1] => [basketball][threes][player]
[2] => [basketball][home][leaders][player]
[3] => [basketball][away][leaders][player]
$array = ..... // the big array
$str = "[basketball][player]";
$keys = explode("][",substr($str,1,-1));
$pos = $array; // PHP does a lazy copy, so there is no performance issue here
while($key = array_shift($keys)) $pos = $pos[$key];
// $pos is now your target element
我想将每个元素转换为关联数组中某个元素的引用:

$post['basketball']['player']
$post['basketball']['threes']['player']
etc.

有没有办法将前者自动转换为后者?如果是这样的话会非常方便,如果不是这样的话可能会非常不方便,所以我希望有办法,但我不知道可能是什么。

我会这样说:

[0] => [basketball][player]
[1] => [basketball][threes][player]
[2] => [basketball][home][leaders][player]
[3] => [basketball][away][leaders][player]
$array = ..... // the big array
$str = "[basketball][player]";
$keys = explode("][",substr($str,1,-1));
$pos = $array; // PHP does a lazy copy, so there is no performance issue here
while($key = array_shift($keys)) $pos = $pos[$key];
// $pos is now your target element
  • 剥去开头的
    [
    和结尾的
    ]
    (使用
    substr
  • 使用
    explode
    将字符串拆分为
    ][
  • 循环遍历分解的片段,将它们用作阵列的键
比如说:

[0] => [basketball][player]
[1] => [basketball][threes][player]
[2] => [basketball][home][leaders][player]
[3] => [basketball][away][leaders][player]
$array = ..... // the big array
$str = "[basketball][player]";
$keys = explode("][",substr($str,1,-1));
$pos = $array; // PHP does a lazy copy, so there is no performance issue here
while($key = array_shift($keys)) $pos = $pos[$key];
// $pos is now your target element

谢谢你的回答。不幸的是,它似乎不起作用。我相信这会尝试分别获得
$pos['basketball']
$pos['player']
,而我想要的是
$pos['basketball']['player']
(这个结论是基于将此代码复制并粘贴到我的应用程序中并进行尝试。)您是正确的,它得到
$pos['basketball']
,后面跟着
$pos['player']
,但它分配回
$pos
,因此结果是
$pos['basketball']['player']