Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP是检查数组中是否存在值的最快方法_Php_Arrays - Fatal编程技术网

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

PHP是检查数组中是否存在值的最快方法,php,arrays,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" =>

我有这个阵列:

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\u campaign\u id

我尝试在_array()中使用
,但它似乎无法正常工作,因为此数组的
键不同


非常感谢您的帮助。

简单明了的版本使用

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

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

请注意,这样做的缺点是它搜索整个数组,缩小它,然后检查是否还有剩余内容。如果你有一个非常大的数组,一个更有效的方法是循环并
中断当您到达第一个匹配的数组元素时。

您好,您可以尝试以下操作:

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

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

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

此处显示替代方法的良好信息和基准的可能重复:那里的
$original
变量是什么?@PinoyStackOverflower您的数组。@cale\b当然它支持变量:
$fn=function($element)use($id,$val){return$element[$id]==$val;}$过滤=阵列过滤器($original,$fn)它不支持的是D>2的多维数组,但它超出了范围。@如果你想改进答案,这里有一个闪亮的“编辑”按钮!但我已经更新了,以考虑到您的有用点。欢迎使用堆栈溢出。我没有投你反对票,但我想你可能想理解为什么你会被否决。主要原因有二:一,。您提供了一个“仅限代码”的答案,没有解释它是如何工作的/为什么工作的。2.您的代码没有回答OP的问题(您没有使用多维数组解决问题)。而且,在将来,您应该格式化代码。请注意,您还可以使用
array\u column
的第三个参数,这样您就不必搜索数组:
isset(array\u column($arr,'id',child\u campaign\u id')[398032])
(或者使用
$index_array= array_search(396331, array_column($array, "child_campaign_id"));
var_dump($index_array);