如果可能 foreach 与if结合使用,我想避免。我想搜索数组,取出匹配并在结果上创建一个新的基础。
在这个例子中,我想为每个 os -
创建单独的数组$os1 = $array;
$os2 = $array...
Array看起来像这样:
$array = [
0 => [
'id' => 1,
'name' => 'name',
'os' => 1
],
1 => [
'id' => 2,
'name' => 'name',
'os' => 1
],
2 => [
'id' => 3,
'name' => 'name',
'os' => 2
],
3 => [
'id' => 3,
'name' => 'name',
'os' => 2
]
];
答案 0 :(得分:2)
使用array_filter将输入数组减少到预期结果
$os = 1;
$data = array_filter($array, function($item) use ($os) {
return $item['os'] == $os;
});
答案 1 :(得分:0)
短暂的
$os1 = [];
$os2 = [];
$os3 = [];
foreach ($array as $item) {
${'os' . $item['os']}[] = array('id' => $item['id'], 'name' => $item[$name];
}
更好的一个
$os1 = [];
$os2 = [];
$os3 = [];
foreach ($array as $item) {
switch($item['os']) {
case 1:
$os1[] = array('id' => $item['id'], 'name' => $item[$name]);
break;
case 2:
$os2[] = array('id' => $item['id'], 'name' => $item[$name]);
break;
case 3:
$os3[] = array('id' => $item['id'], 'name' => $item[$name]);
break;
default:
throw new Exception('Unknown Os');
}
}
您也可以指定array($item['id'] => $item[$name]);
代替array('id' => $item['id'], 'name' => $item[$name]);
$os1 = [];
$os2 = [];
$os3 = [];
foreach ($array as $item) {
${'os' . $item['os']}[] = array($item['id'] => $item[$name]);
}