web-dev-qa-db-fra.com

php - Push array dans array - problème clé

j'essaie de pousser plusieurs tableaux dans 1 grand tableau, ce qui donne un tableau de 2 niveaux.

J'ai eu cet ensemble de tableaux par exemple:

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

Mais, après le tableau Push, je reçois ce tableau:

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

 [1] => Tableau 
 (
 [0] => fff 
 [1] => dfgdfgdfgdfgdfgdf 
 [2 ] => dfgdfgdfgdfgdfg 
 [3] => 33 
) 

) 

En gros, c’est ce que je veux faire, MAIS, si vous remarquez qu’après la poussée, les touches sont oubliées et converties en chiffres.

Voici ce que je veux qu'il ressemble à:

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

 [1] => Tableau 
 (
 [cod] => fff 
 [denum] => dfgdfgdfgdfgdfg 
 [descr ] => dfgdfgdfgdfgdfg 
 [cant] => 33 
) 

) 

exemple de code im using:

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

Est-ce que quelqu'un peut m'aider avec ça?

18
user1248047

N'utilisez pas array_values sur votre $row

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

En outre, le moyen préféré pour ajouter une valeur à un tableau est d'écrire $array[] = $value;, sans utiliser array_Push.

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

Et une optimisation supplémentaire consiste à ne pas appeler mysql_fetch_array($result, MYSQL_ASSOC) mais à utiliser mysql_fetch_assoc($result) directement. 

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

Je pense que vous devez aller pour

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

convertissez d'abord votre tableau en JSON

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

puis reconvertissez-le en tableau

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

bonne chance

0
milad

Toutes ces réponses sont bien cependant quand on y pense ....
Parfois, l'approche la plus simple sans sophistication fera l'affaire plus rapidement et sans fonctions spéciales.

Nous avons d’abord défini les tableaux:

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

Ensuite, nous les ajoutons au nouveau tableau:

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

Voyons maintenant notre nouveau tableau avec toutes les clés:

print_r($newArr);

Il n'est pas nécessaire d'utiliser SQL ou des fonctions spéciales pour créer un nouveau tableau multidimensionnel ... n'utilisez pas de réservoir pour vous rendre à pied.

0
Shlomtzion

Utilisez ceci.. 

$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