如何基于元素从php中的关联数组中选择数组

时间:2019-02-21 12:46:34

标签: php arrays

我有一个数组({'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

5 个答案:

答案 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时,将花费大量时间来完成它。