PHP最快的方法来检查数组中的值是否存在

时间:2016-12-01 14:19:46

标签: php arrays

我有这个数组:

array [▼
      0 => array:5 [▼
        "id" => 1
        "user_id" => 15
        "parent_campaign_id" => 69464
        "child_campaign_id" => 69464
        "cpm" => "1.00"
      ]
      1 => array:5 [▼
        "id" => 2
        "user_id" => 15
        "parent_campaign_id" => 69464
        "child_campaign_id" => 396331
        "cpm" => "2.00"
      ]
      2 => array:5 [▼
        "id" => 3
        "user_id" => 15
        "parent_campaign_id" => 69464
        "child_campaign_id" => 398032
        "cpm" => "3.00"
      ]
    ]

如何知道该数组中是否存在396331号,密钥应为child_campaign_id

我尝试了in_array(),但似乎它无法正常工作,因为此数组的keys不同。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:7)

简洁版本使用array_filter

git commit --amend --author="Author Name <email@address.com>

当然,如果您愿意,可以使用变量作为搜索键:

$filtered = array_filter($original, function($element) {
    return $element['child_campaign_id'] === 396331;
});

if (count($filtered)) {
    // it exists
} else {
    // it doesn't
}

请注意,这样做的缺点是它会搜索整个数组,减少它,然后检查是否还有剩余的数据。如果你有一个非常大的数组,一个更有效的方法是当你到达第一个匹配的数组元素时循环遍历$search = 396331; // or whatever $filtered = array_filter($original, function($element) use ($search) { return $element['child_campaign_id'] === $search; });

答案 1 :(得分:3)

试试这个,它将打印数组索引,如果值不存在则会给出错误的结果。

$index_array= array_search(396331, array_column($array, "child_campaign_id"));
var_dump($index_array);

<强> DEMO

答案 2 :(得分:-2)

您好,您可以尝试这样的事情:

    <?php
$a=array("a"=>"red","b"=>"green","c"=>"blue");
$key=array_search("red",$a);
//compare key with String
?>