Как проверить, содержит ли один массив другой в php в последовательности?

На самом деле режим «Смешанный» (Schema.Types.Mixed) выглядит так, что в Mongoose ...

он принимает объект JS без произвольной формы, поэтому все, что вы можете на него набросить. Кажется, вам нужно активировать сохранение этого объекта вручную после этого, но это похоже на справедливый компромисс.

Mixed

«Что угодно» SchemaType, его гибкость возникает при компромисс с ним сложнее поддерживать. Смешанный доступен либо через Schema.Types.Mixed, либо путем передачи пустого литерала объекта. Следующие эквиваленты:

var Any = new Schema({ any: {} });
var Any = new Schema({ any: Schema.Types.Mixed });

Поскольку это тип без схемы, вы можете изменить значение на все, что вам нравится, но Mongoose теряет способность автоматически обнаруживать и сохранять эти изменения. Чтобы «сказать» Mongoose, что значение смешанного типа изменилось, вызовите метод .markModified(path) документа, передающий путь к только что измененному типу Mixed.

person.anything = { x: [3, 4, { y: "changed" }] };
person.markModified('anything');
person.save(); // anything will now get saved

1
задан Ak Pasaf 28 February 2019 в 22:32
поделиться

1 ответ

Нечто подобное должно сработать:

$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');
0
ответ дан Miroslav Glamuzina 28 February 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: