这是我的数组
$myArray = Array(
[63145] => Array
(
[id] => 63145
[name] => banana
[type] => fruit
)
[244340] => Array
(
[id] => 244340
[name] => apple
[type] => fruit
)
[253925] => Array
(
[id] => 253925
[name] => portato
[type] => vegetable
)
[233094] => Array
(
[id] => 233094
[name] => carrot
[type] => vegetable
));
我如何遍历这个并拉出所有水果的ID,所以我可以在另一个foreach循环中使用它们?
我试图查看其他问题,但我无法弄清楚如何将答案转换为我的数组(我知道我是菜鸟)..
答案 0 :(得分:3)
天真:
$fruitIds = [];
foreach ($myArray as $item) {
if ($item['type'] == 'fruit') {
$fruitIds[] = $item['id'];
}
}
功能:
$fruitIds = array_column(
array_filter($myArray, function (array $i) { return $i['type'] == 'fruit'; }),
'id'
);
效率更高的功能:
$fruitIds = array_reduce($myArray, function (array $ids, array $i) {
return array_merge($ids, $i['type'] == 'fruit' ? [$i['id']] : []);
}, []);
答案 1 :(得分:1)
您可以使用PHP array_column
和array_filter
执行此操作:
$fruit_ids = array_column(array_filter($arr, function($item, $index) {
return $item['type'] == 'fruit';
}), 'id');
但是您的数组键似乎与子数组上的ID值相同,因此您可以将array_filter
与array_keys
混合使用:
$fruit_ids = array_keys(array_filter($arr, function($item, $index) {
return $item['type'] == 'fruit';
}));