найти кол-во общих элементов, которые идут подряд с самого начала:
function fun(array $array1, array $array2): int {
$count = 0;
foreach(array_keys($array1) as $key) {
if($array1[$key] != ($array2[$key] ?? null)) {
break;
}
$count++;
}
return $count;
}
fun(['a', 'b', 'c'], ['a', 'b', 'c']) // 3
fun(['a', 'b', 'c'], ['a', 'b', 'c', 'd']) // 3
fun(['a', 'b', 'c'], ['a', 'b']) // 2
fun(['a', 'b', 'c'], ['c', 'b', 'a']) // 0
Может что готовое в php есть?
in_array посмотри
Есть куча функций на тему "пересечение массивов", может туда покопать
array_intersect_assoc есть
Не сделает "подряд", сделает все.
Он же проверяет и значение и индекс
хз, проще или нет, но всё же https://3v4l.org/4JF8l
Да, array_intersect_assoc не очень подходит
Супер! 🔥решение! еще наверно можно сократь к такому: array_map(fn($l, $r) => $l === $r, $a, $b) Благодарю! 👍
Обсуждают сегодня