如果针是阵列,我可以如何使用in_array?

问题描述 投票:0回答:4
i有2个数组,该值将从数据库中加载,以下是一个示例:

$arr1 = array(1,2,3); $arr2 = array(1,2,3,4,5,6,7);
我想做的是检查

中是否存在$arr1中的所有值

是否存在。上面的示例应为一个:
$arr2

TRUE
$arr3 = array(1,2,4,5,6,7);

一起返回

$arr1
通常,我使用
$arr3
,因为我只需要将单个值检查到数组中。但是在这种情况下,不能使用
FALSE

。我想看看是否有一种简单的方法可以使用最小的循环进行检查。 aupdate以澄清 第一个数组将是包含唯一值的集合。第二个数组可以包含重复的值。它们都可以保证在处理前一个数组。

使用
in_array

in_array

php arrays search compare
4个回答
103
投票

您可以使用array_intersect

array_diff

array_diff()

46
投票

$arr1 = array(1,2,3); $arr2 = array(1,2,3,4,5,6,7); $arr3 = array_diff($arr1, $arr2); if (count($arr3) == 0) { // all of $arr1 is in $arr2 } 您可以尝试使用

array_diff()
函数来找到两个数组之间的区别,这可能会对您有所帮助。我认为要澄清您的意思是,第一个数组中的所有值都必须在第二个数组中,而不是相反。
    

在我的特定情况下,我需要检查是否在处理之前处理了一对ID。如此简单
$arr1 = array(1,2,3);
$arr2 = array(1,2,3,4,5,6,7);

if ( $arr1 == array_intersect($arr1, $arr2) ) {
    // All elements of arr1 are in arr2
}
对我不起作用。

5
投票

$arr1 = array(1,2,3); $arr2 = array(1,2,3,4,5,6,7); $diff = array_diff($arr1, $arr2); if ( empty($diff) ) { // All elements of arr1 are in arr2 } 这可能根本不是最佳解决方案,但是我只需要它才能执行一次肮脏的脚本。


0
投票
array_diff()


使用array_unique的其他解决方案,以检查第一个数组是否在另一个数组上。

<?php $pairs = array(); // ... $pair = array($currentId, $id); sort($pair); $pair = implode('-', $pair); if (in_array($pair, $pairs)) { continue; } $pairs[$pair] = $pair;

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.