我有一个多维关联数组,如下所示
$data = Array
(
[store_name] => Jota
[social] => Array
(
[fb] => 78
[youtube] => 34
[twitter] => 97
[linkedin] => 23
[pinterest] => 12
[instagram] => 93
[flickr] => 45
)
)
输入到我的程序是一个字符串这是由上面数组中的键组成的,键之间用括号分隔。如
$input = "data[social][fb]"
问题1我如何遍历上面的数组根据输入字符串模式&访问$data["social"]["fb"]
?
问题2
如何更新上面数组中的值,然后是字符串模式?
$pattern = "data[social][fb];
$value = "foo";
update_array( $data, $pattern, $value);
您可以使用正则表达式提取键,然后迭代地挖掘数据结构:
function getDeep($data, $str) {
preg_match_all("#[(.*?)]#", $str, $keys, PREG_PATTERN_ORDER);
foreach ($keys[1] as $key) $data = $data[$key];
return $data;
}
像这样运行:
$data = [
"store_name" => "Jota",
"social" => [
"fb" => 78,
"youtube" => 34,
"twitter" => 97,
"linkedin" => 23,
"pinterest" => 12,
"instagram" => 93,
"flickr" => 45,
]
];
$input = "data[social][fb]";
echo getDeep($data, $input);