如何检查一个数组是否包含序列中 php 中的另一个数组?
How to check if one array contains another in php in a sequence?
我有两个数组:
$a = array("w","c","d","e","g","h");
$b = array("c","d","e");
$c = array("c","e","d");
它应该 return "TRUE" 如果我们检查 $a 是否包含 $b 或 $a 是否包含 $c 因为 $b 的索引与 $a 和 $c i.e.they 都有 $"c","d","e" 并且它们按顺序出现在 $a 中。
但是,如果 $b = array("c", "g", "d")
,那么我们应该得到 false,因为它包含所有元素,但它们在 $a 中的顺序不正确。
像这样的东西应该可以解决问题:
$a = ["w","c","d","e","g","h"];
$b = ["c","d","e"];
$c = ["c","e","d"];
function containsSequence($arr, $subArray){
$keys = array_keys($arr, $subArray[array_keys($subArray)[0]]);
foreach($keys as $k) {
if(array_slice($arr, $k, count($subArray)) == $subArray){
return true;
}
}
return false;
}
echo 'Contains sequence: '.(containsSequence($a,$b)?'yes:':'no');
echo 'Contains sequence: '.(containsSequence($a,$c)?'ues':'no');
我有两个数组:
$a = array("w","c","d","e","g","h");
$b = array("c","d","e");
$c = array("c","e","d");
它应该 return "TRUE" 如果我们检查 $a 是否包含 $b 或 $a 是否包含 $c 因为 $b 的索引与 $a 和 $c i.e.they 都有 $"c","d","e" 并且它们按顺序出现在 $a 中。
但是,如果 $b = array("c", "g", "d")
,那么我们应该得到 false,因为它包含所有元素,但它们在 $a 中的顺序不正确。
像这样的东西应该可以解决问题:
$a = ["w","c","d","e","g","h"];
$b = ["c","d","e"];
$c = ["c","e","d"];
function containsSequence($arr, $subArray){
$keys = array_keys($arr, $subArray[array_keys($subArray)[0]]);
foreach($keys as $k) {
if(array_slice($arr, $k, count($subArray)) == $subArray){
return true;
}
}
return false;
}
echo 'Contains sequence: '.(containsSequence($a,$b)?'yes:':'no');
echo 'Contains sequence: '.(containsSequence($a,$c)?'ues':'no');