как поместить данные в массив в php

#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
        )

)