我有一个数组({'count(id_phone)': 3},)
,其中还有5个数组(关联数组),每个数组包含5个元素(键为:$arrItems['items']
)。
我想从f_name, l_name, contact, address, seller_id
的所有数组中获取$arrItems['items']
的元素为1的数组,如下面给出的seller_id
代码。
请指导我如何使用foreach循环,否则...
"seller_id"=>1
答案 0 :(得分:2)
您可以使用array-filter:
array_filter —使用回调函数过滤数组的元素
在您的情况下:
$sellerId = "1";
$arr = array_filter($arrItems['items'], function($e) use ($sellerId) {
return $sellerId == $e["seller_id"]; });
答案 1 :(得分:1)
foreach ($arrItems['items'] as $subarray) {
if ($subarray[seller_id] === 1) {
$result[] = $subarray;
}
}
这是您需要的吗?
答案 2 :(得分:1)
您可以使用array_filter
来过滤数组项
$arr = array_filter($arrItems['items'], function($arr) {
return $e["seller_id"] == 1;
});
答案 3 :(得分:0)
在这里您可以使用foreach找到简单的解决方案。
$arr = [];
foreach ($arrItems['items'] as $i => $row) {
if ($row['seller_id'] != 1) {
// Ignore row if seller_id is not 1
continue;
}
// here you got only elements with seller_id = 1
// so you can add them to a new array
$arr[] = $row;
}
// After the loop (foreach) in $row you get only elements with seller_id 1.
// If they must be in $arrItems['items'] use it
$arrItems['items'] = $arr;
echo '<pre>';
print_r($arrItems['items']);
echo '</pre>';
结果:
Array
(
[f_name] => abc
[l_name] => xyz
[contact] => 12345
[address] => xyz
[seller_id] => 1
)
Array
(
[f_name] => abc
[l_name] => xyz
[contact] => 12345
[address] => xyz
[seller_id] => 1
)
Array
(
[f_name] => abc
[l_name] => xyz
[contact] => 12345
[address] => xyz
[seller_id] => 1
)
答案 4 :(得分:0)
以最简单的方式仅获得两行代码即可。
$key = array_search(1, array_column($arrayItems, 'seller_id'));
print_r($arrayItems[$key]);
此方法使用二进制搜索技术,当foreach循环的编号为100000303时,将花费大量时间来完成它。