массивы — Как иметь значение следовать друг за другом в PHP?

Как мне найти значения в массиве, который соответствует другому массиву по порядку?

Вот мой код это дает мне $ Array4, который не соответствует ожидаемому результату (приведенному ниже):

<?php
for ($j=0; $j < 1; $j++) {
for ($i=0; $i < 100; $i++) {
$Array3 = (array_intersect($Array2, $Array1));
$Array4 = array_unique($Array3);
}

print_r($Array4);
}
?>

$ Array1:

[not] => G
[have] => L

$ Array2 — Массив, который соответствует $ Array1:

[Once] => B
[uppon] => A
[a] => G
[time] => M
[,] => Z
[a] => V
[small] => G
[squirrel] => F
[,] => Z
[whitch] => U
[once] => L
[in] => N
[the] => N
[forest] => X
[,] => Z
[set] => G      \\Search
[out] => L      \\string
[to] => V
[find] => M
[something] => N
[to] => W
[eat] => X
[,] => Z
[to] => G
[survive] => G
[.] => Z

Результат с моим кодом:

$ Array3 — с дубликатами:

[a] => G
[small] => G
[once] => L
[set] => G     \\Search
[out] => L     \\string
[to] => G

$ Array4 — Результат (проблема в том, что «а» и «один раз» не следуют друг за другом в массиве $ Array2):

[a] => G
[once] => L

Ожидаемый результат:

[set] => G    \\Search
[out] => L    \\string

0

Решение

Надеюсь, это сделает то, что вы ищете.

function findSameInPosition($needle, $haystack) {
$indexedNeedle = array_values($needle);
$indexedHaystack = array_values($haystack);
foreach (array_keys($indexedHaystack) as $key) {
if (array_slice($indexedHaystack, $key, count($indexedNeedle)) === $indexedNeedle) {
return array_slice($haystack, $key, count($indexedNeedle));
}
}
}

// Example:

$input1 = array(
"not" => "G",
"have" => "L");

$input2 = array(
"Once" => "B",
"uppon" => "A",
"a" => "G",
"time" => "M",
"," => "Z",
"a" => "V",
"small" => "G",
"squirrel" => "F",
"," => "Z",
"whitch" => "U",
"once" => "L",
"in" => "N",
"the" => "N",
"forest" => "X",
"," => "Z",
"set" => "G",
"out" => "L",
"to" => "V",
"find" => "M",
"something" => "N",
"to" => "W",
"eat" => "X",
"," => "Z",
"to" => "G",
"survive" => "G",
"." => "Z");

findSameInPosition($input1, $input2); // Returns Array ( [set] => G [out] => L )
0

Другие решения

Других решений пока нет …