PHP-根据字段划分多维数组';s值
我有一个初始数组:PHP-根据字段划分多维数组';s值,php,arrays,multidimensional-array,split,Php,Arrays,Multidimensional Array,Split,我有一个初始数组: $arr0 = array( 0 => array( 'a' => 1, 'b' => 1 ) 1 => array( 'a' => 2, 'b' => 1 ) 2 => array( 'a' => 3, 'b' => 2 ) 3 => 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
)
);
我希望根据字段“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
)
);
现在,字段“b”可以有任何自然数作为值,因此我需要的结果数组并不总是三个
我发现了一个相关的问题(和答案),但我的问题是具体的,因为我事先不知道“b”有什么原始值,以及有多少不同的值
有什么想法吗
(编辑:$arr3写为$arr1)
第二行有魔力,它动态地构建了一个变量名。然而,这种编程方式确实很笨拙;最好将结果放入另一个数组中,如下所示:
foreach ($arr0 as $value) {
$allarr[$value['b']][] = $value;
}
// $allarr is defined
foreach
,没有任何内置的功能。数组是如何构造的?您最好更改它。我的数组是数据库查询的结果,$arr[0]、$arr[1]等是表行。字段“a”和“b”分别是数据库字段“内容类型”和“内容单元”。我需要回显第三个DB字段的值,这取决于它是否属于指定的类型和指定的单元,还需要回显仅属于指定类型的所有内容,以及仅属于指定单元的所有内容。哇!我现在觉得自己很愚蠢:)谢谢,这很有效。另外,感谢您对结果数组的建议,我没有想到这一点。
foreach ($arr0 as $value) {
${"arr" . $value['b']}[] = $value;
}
// $arr1, $arr2 and $arr3 are defined
foreach ($arr0 as $value) {
$allarr[$value['b']][] = $value;
}
// $allarr is defined