Php 检查数组是否包含顺序相同的另一个数组的值
我有两个阵列,第一个是:Php 检查数组是否包含顺序相同的另一个数组的值,php,arrays,Php,Arrays,我有两个阵列,第一个是: [4, 6, 2, 7, 5, 1] 第二个是: [2, 7, 5] 如何确定第一个数组是否包含与第二个数组相同的值(,且顺序相同)。在这种情况下,函数将返回TRUE,因为序列2,7,5实际上存在于第一个数组中。对于2,5,7,它将返回FALSE。值存在于第一个数组中,但顺序不完全相同 是否有用于此的现有PHP函数?如果不是,我应该如何实现这一点?如果数组只是数字,我建议使用一个技巧: $a1 = [4, 6, 2, 7, 5, 1]; $a2 = [2, 7, 5
[4, 6, 2, 7, 5, 1]
第二个是:
[2, 7, 5]
如何确定第一个数组是否包含与第二个数组相同的值(,且顺序相同)。在这种情况下,函数将返回TRUE
,因为序列2,7,5
实际上存在于第一个数组中。对于2,5,7
,它将返回FALSE
。值存在于第一个数组中,但顺序不完全相同
是否有用于此的现有PHP函数?如果不是,我应该如何实现这一点?如果数组只是数字,我建议使用一个技巧:
$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';
对于数组内容的常见情况:
$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; }
我可以理解这是可行的,但是没有更好的方法来实现这一点吗?由于将数组转换为字符串看起来不太正确…@u_mulder用逗号包装两个字符串,以避免将2,7,5与22,7,55进行比较+因为我也这么想