php - 在 PHP 中动态创建/插入关联数组

标签 php associative-array

我正在尝试在 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/

相关文章:

php - ( sdonate) 1067/var/www/donate/install.php : 中 'expiretime' 的默认值无效

php - 在以下情况下如何更改数组?

javascript - 访问 AngularJS 常量

bash - 如何在 Bash 中迭代关联数组

dictionary - "map"在计算机科学中的起源

php - 更改订单项目在 WooCommerce 管理订单页面中显示的元键标签

包含字母、数字和一个连字符的用户名的 Javascript 正则表达式

Javascript-关联数组排序

javascript - <script> 代码中使用的 PHP 变量被添加到 URL

php - 自定义报告Magento中与时区的区别