![](/img/trans.png)
[英]PHP - Search one associative array with an array of values, then create a new array with matching results
[英]PHP - search in array and create new one
我想避免foreach与if结合使用。 我想搜索数组,取出匹配项并根据结果创建一个新的。
在此示例中,我想为每个操作系统创建单独的数组-
$os1 = $array;
$os2 = $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
]
];
使用array_filter将输入数组减少为预期结果
$os = 1;
$data = array_filter($array, function($item) use ($os) {
return $item['os'] == $os;
});
矮个
$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]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.