Я пытаюсь запустить некоторые логические тесты и сопоставить список строк с базой данных, но мне нужна помощь с массивом, который у меня есть.Объединение до 3 значений в массиве в цикле
Проблема
У меня есть массив:
$myArray =
array([0] (
array [0] ([0] A, [1] B, [2] C, [3] H)
array [1] ([0] A, [1] D, [2] G, [3] H, [4] L)
array [2] ([0] D, [1] Z, [2] J, [3] K, [4] O, [5] X)
)
array([1] (
array [2] ([0] F, [1] Y, [2] W, [3] H, [4] L)
)
array([2] (
array [0] ([0] O, [1] T, [2] C, [4] O, [5] X)
array [1] ([0] U, [1] E, [2] E, [3] D)
))
Я пытаюсь проверить строки в этом массиве против списка, который сочетает в себе 1, 2 и 3 строки в сочетании с «_» в Таблица.
Пример: или a_b или A_B_C
Переменные и константы
- Длина массива может варьироваться в каждом втором измерении массива
- Строки можно повторить несколько раз, и это не имеет никакого отношения по логике
- Однако константа состоит в том, что тест для объединения двух строк или трех строк всегда является последовательным (например, всегда A_B или A_B_C, а не A_D или A_D_J, если это имеет смысл)
- Последовательность перемещается по одной букве каждый раз, например. (B_C_D, B_C и B), затем (C_D_E и т. д.)
- Когда в массиве недостаточно строк для продолжения тестирования 2 или 3 комбинированных слов, тогда тест должен просто запустить на 1 строку
То, что я пытаюсь сделать, и желаемый результат
мне нужна помощь с синтаксисом массива, чтобы помочь мне построить код в логический аргумент 3 уровня в цикле
что-то вроде этого:
IF A_B_C существует в myTable что-то делать
ELSE IF a_b существует что-то еще
ELSE ЕСЛИ существует сделать еще одну вещь
ELSE вернуть пустой
Я не могу вполне понять, однако, как манипулировать выше массив так, чтобы прийти к переменным
$firstTest = 'A_B_C'; <br>
$secondTest = 'A_B'; <br>
$thirdTest = 'A'; <br>
(я могу получить thirdTest)
То, что я пытался
через получение полезной помощи по другим вопросам массива, я попытался прохождение $ туАггау через петлю Еогеаспа следующим образом:
foreach ($myArray as $newArray) {
$i = 0;
$j = $i++;
foreach($newArray as $key=>$val) {
$impArray = array($val[$i],$val[$j]);
echo implode('_', $impArray);
}
}
Однако это занимает первую строку каждого массива первого уровня.
EDIT:
Я экспериментировал с array_slice и делать в то время, и может получить почти там, но картина не вполне следуют комбинации с 3x струнный; вместо этого он увеличивается от 3 строк до 4 строк, до 5 строк и т. д. ... и я не знаю, почему.
Вот мои последние попытки:
foreach ($myArray as $newArray => $val) {
$x = 0;
$z = 3;
$route = array();
do {
$route = array_slice($val, $x , $z);
$imp_route = implode('_', $route);
echo $imp_route;
$x++;
$z++;
} while ($z <= count($val));
}
Ваших примеров DON» t, похоже, совпадают с '$ myArray', которые вы предоставили в начале. Можете ли вы убедиться, что ваши примеры под ** Переменные и константы ** соответствуют данным '$ myArray'? Например, я не вижу никакого набора, который бы дал комбинацию 'B_C_D'. – mopo922
Да, я стараюсь быть максимально ясным здесь, в V & C. Я имею в виду A_B_C с целью их последовательного отображения. Но если вы хотите, последовательность должна выполняться, A_B_C, B_C_H, а затем в массиве [1] A_D_G, D_G_H и т. Д. ... – Jacob
Это помогает, спасибо. – mopo922