#php
#php
Вопрос:
Я изучаю ООП, и я мог бы создать список объектов в массиве, но мой код возвращает последний массив, который я искал здесь, но не нашел решения или идеи, как это сделать.
Исключение
"MerchantDefinedFields":[
{
"Id":2,
"Value":"email@test.com"
},
{
"Id":4,
"Value":"Web"
},
{
"Id":9,
"Value":"NAO"
},
{
"Id":83,
"Value":"Field"
},
{
"Id":84,
"Value":"Only"
}
]
Мой код
$MDDs = array(
array("Id" => 2, "Value" => "email@test.com"),
array("Id" => 4, "Value" => "Web"),
array("Id" => 9, "Value" => "NO"),
array("Id" => 83, "Value" => "Field"),
array("Id" => 84, "Value" => "Only")
);
foreach($MDDs as $MDD){
$abac = array("Id" => $MDD['Id'], "Value" => $MDD['Value']);
}
Результат
Array
(
[Id] => 84
[Value] => PROPRIO
)
Комментарии:
1. Разве ваш вывод не совпадает с вводом? Также просто для того, чтобы указать, что вы создаете вложенный массив, а не массив объектов.
Ответ №1:
Ваша foreach()
настройка переустанавливается $abac
каждый раз, когда она проходит через цикл. Поэтому при последнем запуске он установит переменную на последний элемент в вашем массиве.
Вместо того, чтобы каждый раз устанавливать переменную, попробуйте добавить ключ-> значение в массив (или что-то в этом роде, в зависимости от того, что вы хотите):
$abac = [];
foreach($MDDs as $MDD){
$abac[] = array("Id" => $MDD['Id'], "Value" => $MDD['Value']);
}
Сложно создать точный правильный ответ для вас, поскольку неясно, чего вы пытаетесь достичь, но это должно, по крайней мере, указать вам правильное направление.
Ответ №2:
Для простого ответа: — Вам не нужен foreach
цикл для получения желаемого результата, вы можете просто использовать встроенную функцию php для преобразования вашего массива в JSON
$abac = json_encode ( $MDDs);
Теперь перейдем к вашей проблеме :-
вы переназначаете $abac
переменную в цикле вместо того, чтобы добавлять к ней подобные значения.
$abac = [];
foreach($MDDs as $MDD){
$abac[] = array("Id" => $MDD['Id'], "Value" => $MDD['Value']);
}
Ответ №3:
Лучший способ сделать это — объявить $abac вне foreach, а затем использовать метод array_push следующим образом:
$abac = array();
foreach($MDDs as $MDD)
{
array_push($abac, array("Id" => $MDD['Id'], "Value" => $MDD['Value']));
}
print_r($abac);