我有两个数组,第一个是:
[4, 6, 2, 7, 5, 1]
,第二个是:
[2, 7, 5]
如何确定第一个数组是否包含第二个数组的 SAME 值(以及 SAME 顺序)。在这种情况下,函数将返回TRUE
,因为序列2, 7, 5
实际上存在于第一个数组中。它会为FALSE
返回2, 5, 7
。这些值存在于第一个数组中,但不是按照确切的顺序存在。
这是否有现有的PHP功能?如果不是,我该如何实现?
答案 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; }