[英]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.