web-dev-qa-db-ja.com

php-配列を配列にプッシュする-重要な問題

複数の配列を1つの大きな配列にプッシュしようとしていますが、2 lvl配列になります。

たとえば、この配列セットを入手しました。

 Array 
(
 [cod] => ddd 
 [denum] => ffffffffffffffff 
 [descr] => ggggggg 
 [cant] => 3 
)
 Array 
(
 [cod] => fff 
 [denum] => dfgdfgdfgdfgdfg 
 [descr] => dfgdfgdfgdfgdfg 
 [cant] => 33 
)

しかし、配列プッシュの後、私はこの配列を取得します:

 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;
   }
_
43
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