it-swarm.com.ru

php - выдвинуть массив в массив - проблема с ключом

я пытаюсь выдвинуть несколько массивов в 1 большой массив, в результате чего массив 2 уровня.

Я получил этот набор массивов, например:

 Array 
 (
 [Cod] => ddd 
 [Denum] => ffffffffffffffff 
 [Descr] => ggggggg 
 [Cant] => 3 
) 
Array 
 (
 [Cod] => fff 
 [Denum] => dfgdfgdfgdfgdfg 
 [Descr] => dfgdfgdfgdfgdfg 
 [Cant] => 33 
) 

Но, после массива Push, я получаю этот массив:

 Array 
 (
 [0] => Array 
 (
 [0] => ddd 
 [1] => ffffffffffffffff 
 [2] => ggggggg 
 [3] => 3 
) 

 [1] => Массив 
 (
 [0] => fff 
 [1] => dfgdfgdfgdfgdfg 
 [2 ] => dfgdfgdfgdfgdfg 
 [3] => 33 
) 

) 

По сути, это то, что я хочу сделать, НО, если вы заметите после нажатия, ключи будут забыты и преобразованы в числовые.

Вот как я хочу, чтобы это выглядело так:

 Array 
 (
 [0] => Array 
 (
 [Cod] => ddd 
 [Denum] => ffffffffffffffff 
 [Descr] => ggggggg 
 [cant] => 3 
) 

 [1] => Массив 
 (
 [cod] => fff 
 [denum] => dfgdfgdfgdfgdfg 
 [descr ] => dfgdfgdfgdfgdfg 
 [cant] => 33 
) 

) 

пример кода, который я использую:

$res_arr_values = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
   {
       array_Push($res_arr_values, array_values($row));
   }

Может ли кто-нибудь помочь мне с этим?

18
user1248047

Не используйте array_values на вашем $row

$res_arr_values = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
   {
       array_Push($res_arr_values, $row);
   }

Также предпочтительным способом добавления значения в массив является запись $array[] = $value;, не используя array_Push

$res_arr_values = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
   {
       $res_arr_values[] = $row;
   }

И дальнейшая оптимизация заключается не в вызове mysql_fetch_array($result, MYSQL_ASSOC), а в непосредственном использовании mysql_fetch_assoc($result)

$res_arr_values = array();
while ($row = mysql_fetch_assoc($result))
   {
       $res_arr_values[] = $row;
   }
42
Basti

Я думаю, что вы должны пойти на

$arrayname[indexname] = $value;
3
Saiyam Patel

сначала преобразовать ваш массив в JSON

while($query->fetch()){
   $col[] = json_encode($row,JSON_UNESCAPED_UNICODE);
}

затем преобразовать его обратно в массив

foreach($col as &$array){
   $array = json_decode($array,true);
}

удачи

0
milad

Все эти ответы хороши, однако, если подумать об этом ....
Иногда самый простой подход без изощренности сделает свое дело быстрее и без специальных функций.

Сначала мы устанавливаем массивы:

$arr1 = Array(
"cod" => ddd,
"denum" => ffffffffffffffff,
"descr" => ggggggg,
"cant" => 3
);
$arr2 = Array
(
"cod" => fff,
"denum" => dfgdfgdfgdfgdfg,
"descr" => dfgdfgdfgdfgdfg,
"cant" => 33
);

Затем мы добавляем их в новый массив:

$newArr[] = $arr1;
$newArr[] = $arr2;

Теперь давайте посмотрим наш новый массив со всеми ключами:

print_r($newArr);

Нет необходимости в sql или специальных функциях для создания нового многомерного массива .... не используйте танк, чтобы добраться туда, куда вы можете идти.

0
Shlomtzion

Использовать этот.. 

$res_arr_values = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    $res_arr_values[] = $row;
}
0
Adrian Gunawan
$res_arr_values = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    $res_arr_values[] = $row;
}


array_Push == $res_arr_values[] = $row;

example 

<?php
$stack = array("orange", "banana");
array_Push($stack, "Apple", "raspberry");
print_r($stack);

Array
(
    [0] => orange
    [1] => banana
    [2] => Apple
    [3] => raspberry
)
?>
0
rasvi