Том*_*раћ 3 php arrays split multidimensional-array
我有一个初始数组:
$arr0 = array(
0 => array(
'a' => 1,
'b' => 1
)
1 => array(
'a' => 2,
'b' => 1
)
2 => array(
'a' => 3,
'b' => 2
)
3 => array(
'a' => 4,
'b' => 3
)
4 => array(
'a' => 5,
'b' => 3
)
);
Run Code Online (Sandbox Code Playgroud)
我希望根据字段 'b' 的成员值将其划分为单独的数组,如下所示:
// $arr1 contains $arr0[0] and $arr0[1] because their value of 'b' is 1.
$arr1 = array(
0 => array(
'a' => 1,
'b' => 1
)
1 => array(
'a' => 2,
'b' => 1
)
);
// $arr2 contains $arr0[2] because its value of 'b' is 2.
$arr2 = array(
0 => array(
'a' => 3,
'b' => 2
)
);
// $arr3 contains $arr0[3] and $arr0[4] because their value of 'b' is 3.
$arr3 = array(
0 => array(
'a' => 4,
'b' => 3
)
1 => array(
'a' => 5,
'b' => 3
)
);
Run Code Online (Sandbox Code Playgroud)
现在,字段 'b' 可以有任何自然数作为值,所以我并不总是需要三个结果数组。
我发现了一个相关的问题(和答案),在这里,但我的问题是具体的,因为我事先没有什么原始值“B”有知道做什么,以及如何不同值的许多有。
有任何想法吗?
(编辑:$arr3 写为 $arr1)
foreach ($arr0 as $value) {
${"arr" . $value['b']}[] = $value;
}
// $arr1, $arr2 and $arr3 are defined
Run Code Online (Sandbox Code Playgroud)
第二行有魔法,它动态构建了一个变量名。然而,这种编程方式真的很笨拙。您最好将结果放入另一个数组中,如下所示:
foreach ($arr0 as $value) {
$allarr[$value['b']][] = $value;
}
// $allarr is defined
Run Code Online (Sandbox Code Playgroud)