【问题标题】:Return key that is NOT found in array with array_search php使用array_search php返回未在数组中找到的键
【发布时间】:2019-11-14 11:13:53
【问题描述】:

我正在尝试仅获取使用 array_search (false) 找不到的数组的键,但我对此没有任何想法...

目前我正在获取找到的数组:

$ArrayA = ["Genre1" => 1, "Genre2" => 2, "Genre3" => 3, "Genre4" => 4];
$ArrayB = [1, 2, 3];

foreach ($ArrayB as $i) {
    $found = array_search($i, $ArrayA);

    if ($found === false) {
        echo "$i is not in the array";
        echo "list keys that are not in ArrayB";

    } else {
        echo "$i is in the array at <strong>$found</strong>";
    }
}               

但正如我在标题中所说,我需要打印在搜索中未找到的值的键...

任何想法如何获取这些密钥?...我知道搜索只会在未找到时返回 false,有没有其他方法可以获取未找到的密钥而不是找到的密钥?

非常感谢!!!

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    你可以使用array_diff

    print_r(array_diff($ArrayA, $ArrayB));
    

    如果您只想要密钥,请使用array_keys(array_diff($ArrayA, $ArrayB))

    工作示例:https://3v4l.org/h7DRv

    【讨论】:

      【解决方案2】:

      array_diff 呢?

      $ArrayA = ["Genre1" => 1, "Genre2" => 2, "Genre3" => 3, "Genre4" => 4];
      $ArrayB = [1, 2, 3];
      
      $valuesArrayA = array_values($ArrayA);
      
      $notInArrayA = array_diff($valuesArrayA,$ArrayB);
      

      【讨论】:

        【解决方案3】:

        使用 array_intersect() 代替:

        $result = array_intersect($ArrayA, $ArrayB);
        

        【讨论】:

        • 这项工作是为了找到数组......但无论如何都可以,谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        • 1970-01-01
        • 2011-02-04
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 2019-03-18
        相关资源
        最近更新 更多