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

Pin*_*wer 0 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"
      ]
    ]
Run Code Online (Sandbox Code Playgroud)

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

我试过,in_array()但它似乎无法正常工作,因为keys这个数组是不同的.

对你的帮助表示感谢.

lon*_*day 7

简单干净的版本使用array_filter.

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

if (count($filtered)) {
    // it exists
} else {
    // it doesn't
}
Run Code Online (Sandbox Code Playgroud)

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

$search = 396331; // or whatever
$filtered = array_filter($original, function($element) use ($search) {
    return $element['child_campaign_id'] === $search;
});
Run Code Online (Sandbox Code Playgroud)

请注意,这样做的缺点是它搜索整个数组,减少它然后检查是否还有什么.如果你有一个非常大的数组,一个更有效的方法是循环,break;当你到达第一个匹配的数组元素.