#php #mysql #arrays
#php #mysql #массивы
Вопрос:
Уважаемые все, я хочу поместить данные в массив. я использую текущий код. Есть два массива. один содержит ключи и 2 значения. я использую текущий код
while($data=mysql_fetch_array($result))
{
foreach ($arrTemp as $val)
{
array_push($arrKeys, $val);
array_push($arrValues, $data[$val]);
}
}
print_r($arrKeys);
print_r($arrValues);
$arrReturn = array_combine($arrKeys,$arrValues);
……………………………..
и получить текущие результаты из двух массивов.
Array ( [0] => due_date [1] => flag_code [2] => due_date [3] => flag_code [4] => due_date [6] => flag_code )
Array ( [0] => 12:04:2011 [1] => 0 [2] => 13:04:2011 [3] => 0 [4] => 14:04:2011 [6] => 0 )
когда я пытаюсь объединить массив с помощью функции array_combined, она возвращает только массив из двух значений, таких как: Array (due_date => 14:04:2011 flag => 0)
как я могу получить все значения в одном массиве …..!
Ответ №1:
Это потому, что у вас есть несколько одинаковых ключей массива. Итак, сначала он вставляет due_date
, затем flag_code
, затем он попытается вставить другой due_date
, но поскольку это уже существует в массиве, он перезапишет его. Таким образом, единственными значениями, оставшимися в массиве, будут последняя пара.
Решение состоит в том, чтобы не иметь нескольких одинаковых ключей в одном массиве (вашем due_date
и flag_code
)
Вы могли бы сделать:
foreach ($arrTemp as $val) {
$arrReturn[] = array($val => $data[$val];
}
Это даст вам каждый набор результатов, введенных в массив следующим образом:
$arrReturn[0] = array (due_date => 14:04:2011 flag => 0);
$arrReturn[1] = array (due_date => 14:04:2011 flag => 0);
$arrReturn[2] = array (due_date => 14:04:2011 flag => 0);
...
Комментарии:
1. Пожалуйста, подскажите мне, что я могу сделать. на самом деле я использую имя столбца таблицы в качестве ключей массива, а значения — в качестве элементов массива. некоторое время запрос возвращает более одной строки. затем я сталкиваюсь с этой проблемой. Пожалуйста, подскажите мне, что я делаю, чтобы преодолеть эту проблему
Ответ №2:
$ctr = 0;
foreach ($arrKeys as $id => $key) {
$res_array[$ctr][$key] = $arrValues[$id];
if ($key == 'flag_code') $ctr ;
}
print_r($res_array);
Вывод:
Array
(
[0] => Array
(
[due_date] => 12:04:2011
[flag_code] => 0
)
[1] => Array
(
[due_date] => 13:04:2011
[flag_code] => 0
)
[2] => Array
(
[due_date] => 14:04:2011
[flag_code] => 0
)
)