检查数组是否包含相同顺序的另一个数组的值

时间:2016-07-19 10:45:41

标签: php arrays

我有两个数组,第一个是:

[4, 6, 2, 7, 5, 1]

,第二个是:

[2, 7, 5]

如何确定第一个数组是否包含第二个数组的 SAME 值(以及 SAME 顺序)。在这种情况下,函数将返回TRUE,因为序列2, 7, 5实际上存在于第一个数组中。它会为FALSE返回2, 5, 7。这些值存在于第一个数组中,但不是按照确切的顺序存在。

这是否有现有的PHP功能?如果不是,我该如何实现?

2 个答案:

答案 0 :(得分:1)

如果你的数组只是数字,我建议一个技巧:

$a1 = [4, 6, 2, 7, 5, 1];
$a2 = [2, 7, 5];
// convert both arrays to strings, 
// add `,` in the beginning and end, see @splash58 comment
$a1_str = ',' . implode(',', $a1) . ',';
$a2_str = ',' . implode(',', $a2) . ',';
// check with strpos:
echo strpos($a1_str, $a2_str) !== false? 'Eq' : 'Not eq';

答案 1 :(得分:1)

对于数组内容的常见情况:

$ar1 = [2, 4, 6, 2, 4, 7, 5, 1,];
$ar2 = [2, 7, 5];

// Find point where sub-array can start
$keys = array_keys($ar1, $ar2[0]); 
foreach($keys as $k) 
   // Check that sub-array is the same as the second array 
   if(array_slice($ar1, $k, count($ar2)) == $ar2) 
       { echo "Wow!"; break; }