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));
}
Может кто-нибудь мне помочь?
Ответы
Ответ 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;
Ответ 3
http://uk.php.net/manual/en/function.array-values.php
array_values, поскольку вы используете его, фактически отбрасывает клавиши
Ответ 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
)
?>