0

我试图只获取 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,有没有其他方法可以获取那些未找到的密钥而不是找到的密钥?

非常感谢!!!

4

3 回答 3

2

您可以使用array_diff

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

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

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

于 2019-11-14T11:17:58.837 回答
0

怎么样array_diff

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

$valuesArrayA = array_values($ArrayA);

$notInArrayA = array_diff($valuesArrayA,$ArrayB);
于 2019-11-14T11:20:01.607 回答
0

使用 array_intersect() 代替:

$result = array_intersect($ArrayA, $ArrayB);
于 2019-11-14T12:21:41.690 回答