假设我有两个数组:
$a = ['a', 'b' => array('Jack', 'John'), 'c'];
$b = ['1', '2', '3'];
如何将$b
推送到""价值'杰克'在$a
中,使它成为一个多维数组?所以,最终结果应如下所示:
$ab = ['a', 'b' => ['Jack' => ['1', '2', '3'], 'John'], 'c'];
我知道这会将$a[1]['Jack'] = 'b'
的价值变为关键,但对我来说没问题。
我该怎么做?
答案 0 :(得分:2)
您可以使用函数递归迭代数组,直到获得正确的值('Jack'
),如下所示:
function iterateArr (&$array) {
if (is_array($array)) {
foreach ($array as $key => &$val) {
if (is_array($val)) {
iterateArr($val);
} elseif ($val == 'Jack') {
global $b;
unset($array[$key]);
$array[$val] = $b;
}
}
}
}
iterateArr($a);
对于您的示例,此输出:
['a', 'b' => ['John', 'Jack' => ['1', '2', '3']], 'c']
但是它的美妙之处在于,无论数组的深度是多少,它都可以工作,因为它是一个递归迭代器。例如,对于像这样的数组:
['a', 'b' => ['1', '2', '3' => ['i' => ['Jack', 'John'], 'ii', 'ii', 'iv', 'v']], 'c']
输出为:
['a', 'b' => ['1', '2', '3' => ['i' => ['John', 'Jack' => ['1', '2', '3']], 'ii', 'ii', 'iv', 'v']], 'c']
答案 1 :(得分:0)
$a = ['a', 'b' => array('Jack', 'John'), 'c'];
$b = ['1', '2', '3'];
unset($a['b'][0]); // go inside array $a and get the first value (B in
// this case)
// Then get the key you wanna change.
// Remove that value so we can 'reset' it.
$a['b'][0] = $b; // set array $b as that value;