我正在尝试在 PHP 中动态构建关联数组,但我的策略并不完全正确。基本上,我想在数组结构的某个深度插入一个值,例如:
$array['first']['second']['third'] = $val;
现在,问题是,我不确定该深度是否可用,如果不可用,我想为每个级别创建键(和数组),最后在正确的级别插入值.
因为我在我的代码中做了很多这样的事情,所以我厌倦了做一大堆“array_key_exists”,所以我想做一个为我构建数组的函数,给定一个级别键列表.感谢您对此提供良好策略的任何帮助。我确定有一个非常简单的方法,我只是不明白...
最佳答案
如果你这样做,php 不会怪你
$array['first']['second']['third'] = $val;
print_r($array);
如果您不想对 key 进行硬编码,这里有一个灵活的解决方案
/// locate or create element by $path and set its value to $value
/// $path is either an array of keys, or a delimited string
function array_set(&$a, $path, $value) {
if(!is_array($path))
$path = explode($path[0], substr($path, 1));
$key = array_pop($path);
foreach($path as $k) {
if(!isset($a[$k]))
$a[$k] = array();
$a = &$a[$k];
}
$a[$key ? $key : count($a)] = $value;
}
// example:
$x = array();
array_set($x, "/foo/bar/baz", 123);
array_set($x, "/foo/bar/quux", 456);
array_set($x, array('foo', 'bah'), 789);
关于php - 在 PHP 中动态创建/插入关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2447385/