Php - push массив в массив - ключевой вопрос - программирование
Подтвердить что ты не робот

Php - push массив в массив - ключевой вопрос

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

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

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] => 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
        )

)

пример кода im, используя:

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

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

4b9b3361

Ответ 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).

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

Ответ 2

Я думаю, вам нужно пойти за

$arrayname[indexname] = $value;

Ответ 4

Используйте это.

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

Ответ 5

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

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

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

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

удача

Ответ 6

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

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

$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 или специальных функциях для создания нового многомерного массива.... не используйте танк, чтобы добраться туда, где вы можете ходить.

Ответ 7

i have issue regarding this how to sort out this  


{
    "status": 1,
    "message": "Success",
    "result": {
        "user_id": "3",
        "items": [
            {
                "id": "25",
                "name": "Egg Schezwan Fried Rice",
                "product_cost": "150",
                "product_image": "EggSchewwanFriedRice.jpg",
                "addons": [
                    [
                        {
                            "addon_id": "1",
                            "addon_name": "Karamel Sutra",
                            "addon_cost": "180"
                        }
                    ],
                    [
                        {
                            "addon_id": "3",
                            "addon_name": "Oreo Shot",
                            "addon_cost": "150"
                        }
                    ],
                    [
                        {
                            "addon_id": "5",
                            "addon_name": "Chocolate Over Dose",
                            "addon_cost": "150"
                        }
                    ]
                ],
                "price": "280.00",
                "quantity": "5"
            },
            {
                "id": "28",
                "name": "Veg Soft Noodles",
                "product_cost": "150",
                "product_image": "VedSoftNoodles.jpg",
                "addons": [
                    [
                        {
                            "addon_id": "2",
                            "addon_name": "Banana Caramel Cookies",
                            "addon_cost": "180"
                        }
                    ],
                    [
                        {
                            "addon_id": "3",
                            "addon_name": "Oreo Shot",
                            "addon_cost": "150"
                        }
                    ]
                ],
                "price": "280.00",
                "quantity": "2"
            }
        ]
    } }



but i need output as like this  near addons

"addons": [

                        {
                            "addon_id": "1",
                            "addon_name": "Karamel Sutra",
                            "addon_cost": "180"
                        }

                        {
                            "addon_id": "3",
                            "addon_name": "Oreo Shot",
                            "addon_cost": "150"
                        }

                        {
                            "addon_id": "5",
                            "addon_name": "Chocolate Over Dose",
                            "addon_cost": "150"
                        }

               ],

how to get this kind of response for api call back

                        $addonQuery = "SELECT addon_id FROM user_cart_addon WHERE gen_id = '$addon_prod_id' ";
                        $query3 = mysqli_query($conn, $addonQuery);
                        $sub_cat2 = array();
                        while($row25 = mysqli_fetch_assoc($query3))
                        { 
                                      $addon_id3= $row25['addon_id'];


                                        $sub_cat23 = array();
                                        $addonQuery33 = "SELECT id as addon_id, addon_name, addon_cost FROM addon_prod WHERE id = '$addon_id3' ";
                                        $query33 = mysqli_query($conn, $addonQuery33);
                                        $row256 = mysqli_fetch_assoc($query33);
                                       // {

                                                array_push($sub_cat23, $row256);   
                                                //print_r($sub_cat23);

                                               // $row22['addon'] = $row256;
                                       // } 

                                         array_push($sub_cat2, $sub_cat23);   
                                        //print_r($sub_cat2);  



                                $row22['addons'] = $sub_cat2;          

                        }

Как я могу это достичь?

Ответ 8

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