php - 将数组推入数组 - 关键问题

时间:2012-03-04 12:19:12

标签: php arrays key push

我正在尝试将多个数组推入一个大数组,从而产生一个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] => Array
        (
            [0] => fff
            [1] => dfgdfgdfgdfgdfg
            [2] => dfgdfgdfgdfgdfg
            [3] => 33
        )

)

基本上这就是我想要做的事情,但是,如果你在推动后发现,钥匙会被遗忘,并转换为数字。

这就是我想要的样子:

Array
(
    [0] => Array
        (
            [cod] => ddd
            [denum] => ffffffffffffffff
            [descr] => ggggggg
            [cant] => 3
        )

    [1] => Array
        (
            [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));
   }

有人可以帮我吗?

6 个答案:

答案 0 :(得分:43)

请勿在{{1​​}}

上使用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)

答案 1 :(得分:3)

我认为你必须去

$arrayname[indexname] = $value;

答案 2 :(得分:0)

使用此..

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

答案 3 :(得分:0)

$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
)
?>

答案 4 :(得分:0)

首先将您的数组转换为JSON

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

然后将其恢复为数组

foreach($col as &$array){
   $array = json_decode($array,true);
}
祝你好运

答案 5 :(得分:0)

但是,所有这些答案在考虑时都是不错的。...
有时,最简单的方法如果没有复杂性,则会更快地完成技巧,并且没有特殊功能。

我们首先设置数组:     

$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或特殊函数来构建新的多维数组。...不要使用坦克到达可以行走的地方。