簡體   English   中英

不使用eval()分配給數組的動態分支

[英]Assigning to a dynamic branch of an array NOT with eval()

我正在嘗試從代碼中刪除eval()

目前,我使用:

eval( "$mkt_data" . $branch . " = $xyz" );

$xyz (也是多維數組)分配給$mkt_data的特定分支。

$branch can be 1, 2 or 3 levels deep, i.e.
$branch = "['mkt1']['offer']['bid']";
or
$branch = "['status']";

有什么聰明的方法嗎?

您可以使用如下功能:

function set(&$ary, $keys, $value) {
    $last = array_pop($keys);
    foreach($keys as $k) {
        if(!isset($ary[$k]))
            $ary[$k] = array();
        $ary = &$ary[$k];
    }
    $ary[$last] = $value;
}

例:

$data = array();
set($data, array('foo', 'bar', 'baz'), 42);
print_r($data);

結果:

Array
(
    [foo] => Array
    (
        [bar] => Array
        (
            [baz] => 42
        )

    )

)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM