Как сбросить динамически генерируемый ключ массива php?

У меня есть динамически сгенерированный массив с около 25 числовых значений, выбранных из столбца таблицы базы данных. Затем я получаю эти значения для последующего использования с помощью функции foreach, например:

$array[] = $row['table_colum_name'];
foreach( $array as $key => $value){
$$key = $value;
$value1 = $array['0'];
$value2 = $array['1'];
...
$value25 = $array['24'];

Иногда проблема заключается в том, что для некоторых запросов в $ array [] возвращается менее 25 значений, что создает проблему при получении правильных результатов $ value с использованием ключей, как указано выше. Например, если в позиции 24 не найден результат, то $ array [’23 ‘] будет фактически заполнен результатом $ array [’24’], что испортит весь набор результатов после него.

Я попробовал следующее, чтобы увидеть, есть ли результат для определенного ключа:

if (array_key_exists('23', $array)) {
echo "The '23' element is present in the array";
}

но кажется, что он не может обнаружить случаи, в которых отсутствует ключ / значение.

Любые предложения с благодарностью!

-1

Решение

Трудно представить пример кода, который будет работать идеально, поскольку ваш вопрос и код выше оставляют некоторые детали, но в целом, если я правильно интерпретирую ваш вопрос, должно сработать что-то очень похожее на это:

for( $x = 1; $x <= 25; $x++ ) {
$foo = 'value' . $x;

if ( isset( $array[$x-1])) {
$$foo = $array[$x-1];
}
else {
$$foo = '';
}
}

Таким образом, предполагая, что ваш массив имеет индексы в диапазоне от 0 до 24, и, возможно, пропущено несколько записей, вы получите переменные $value1 Через $value25 установить с соответствующими элементами из массива (например, $ value1 = $ array [‘0’] и т. д.), но если отсутствует элемент (например, array [‘6’]), то соответствующая переменная (например, $ value7 ) будет установлен в нулевую строку.

Я думаю, что это самое ясное, самое оборонительное решение, которое я мог придумать.

ОБНОВИТЬ

Обновленная версия на основе новой информации в комментариях:

foreach( $array as $key => value ) {
$foo = 'value' . $key + 1;

if ( isset( $array[$key])) {
$$foo = $array[$key];
}
else {
$$foo = '';
}
}

Так что если вы хотите $value204 быть установленным в значение $array['203'] когда $array['203'] существует, оставьте + 1 во второй строке.

0

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

Еще раз всем спасибо за ваши ответы.

В итоге я переместил свое решение в поиск SQL и использовал правильное внешнее объединение, чтобы сохранить нулевые результаты при их появлении, что позволяет поддерживать постоянный счетчик массивов, что, в свою очередь, позволяет мне получать Значения массива предсказуемым, последовательным образом.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector