如何将值列表设置为多维关联数组中的键?

我想价值观,如列表转换:如何将值列表设置为多维关联数组中的键?

$foo = ['a', 'b', 'c']; 

到遍历数组键如列表:

$bar['a']['b']['c'] = 123; 

如何创建哪些键是基于一个关联数组一组值存储在另一个数组中?

回答:

您可以参考。试试这个代码,live demo

<?php 

$foo = ['a', 'b', 'c'];

$array = [];

$current = &$array;

foreach($foo as $key) {

@$current = &$current[$key];

}

$current = 123;

print_r($array);

回答:

我会做这样的:

$foo = ['a', 'b', 'c']; 

$val = '123';

foreach (array_reverse($foo) as $k => $v) {

$bar = [$v => $k ? $bar : $val];

}

我们迭代反向阵列上和第一分配最里面的值,然后建立由内而外的阵列。

回答:

这是另一种选择:创建一个临时可解析字符串(通过提取第一个值,然后将剩余值附加为方括号包装字符串),调用parse_str(),并将输出变量设置为$bar

代码:(Demo)

$foo = ['a', 'b', 'c']; 

$val=123;

parse_str(array_shift($foo).'['.implode('][',$foo)."]=$val",$bar);

// built string: `a[b][c]=123`

var_export($bar);

输出:

array (

'a' =>

array (

'b' =>

array (

'c' => '123',

),

),

)


如果第一方法感觉太劈肥胖型,下面的递归方法是一种稳定的方法:

验证码:(Demo)

function nest_assoc($keys,$value){ 

return [array_shift($keys) => (empty($keys) ? $value : nest_assoc($keys,$value))];

// ^^^^^^^^^^^^^^^^^^--------------------------------------------------------extract leading key value, modify $keys

// check if any keys left-----^^^^^^^^^^^^

// no more keys, use the value---------------^^^^^^

// recurse to write the subarray contents-------------^^^^^^^^^^^^^^^^^^^^^^^^^

}

$foo=['a','b','c'];

$val=123;

var_export(nest_assoc($foo,$val));

// same output

以上是 如何将值列表设置为多维关联数组中的键? 的全部内容, 来源链接: utcz.com/qa/261417.html

回到顶部