Как проверить, содержит ли один массив другой в php в последовательности? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть два массива:

$a = array("w","c","d","e","g","h");
$b = array("c","d","e");
$c = array("c","e","d");

Он должен вернуть «ИСТИНА», если мы проверим, содержат ли $ a $ b или $ a содержат $ c, потому что индекс $ b находится в последовательности с $ a& $ c iehey, у всех есть $ "c", "d", "e", и они идут в последовательности в $ a.Однако, если $b = array("c", "g", "d"), то мы должны получить false, потому что в нем есть все элементы, но они не в правильной последовательности в $ a.

1 Ответ

0 голосов
/ 01 марта 2019

Примерно так должно получиться:

$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');
...