【问题标题】:How to change a multidimension array element with a function如何用函数改变多维数组元素
【发布时间】:2013-06-28 07:54:20
【问题描述】:

我有一个这样的数组:

<?php
$arr = [
    'a' => [
        'a1' => [
            'A11', 'A12', 'A13'
        ]
    ]
];

我可以轻松更改A13 元素:

$arr['a']['a1'][2] = 'A13 NEW';

但我想用一个函数来做到这一点,像这样:

f($arr, ['a', 'a1', 2], 'A13 New');

我使用eval 编写此函数,但我不喜欢它。

<?php
function f(&$array, $index, $value) {
    $e = '$array';
    for ($i = 0, $l = count($index); $i < $l; $i++) {
        $e .= '[$index[' . $i . ']]';
    }
    $e .= ' = $value;';

    // now we have `$e` like this
    // $array[$index[0]][$index[1]][$index[2]] = $value;

    eval($e);
}

不使用eval如何编写这个函数?

【问题讨论】:

    标签: php arrays function multidimensional-array


    【解决方案1】:
    $arr = array(
        'a' => array(
            'a1' => array(
                'A11', 'A12', 'A13'
            )
        )
    );
    
    function f(&$arr, $index, $value) {
        $tmp = &$arr;
        foreach ($index as $key) {
            $tmp = &$tmp[$key];
        }
        $tmp = $value;
    }
    
    f($arr, array('a', 'a1', 2), 'A13 New');
    
    //$arr['a']['a1'][2] = 'A13 NEW';
    var_dump($arr);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      相关资源
      最近更新 更多