Изменить вид массива PHP

Menro

web, seo, email, hack
Регистрация
27 Янв 2008
Сообщения
689
Реакции
138
Добрый день!
Извините, но сам догнать не могу. Попытки что-то придумать, пока безуспешны. Поэтому вынужден попросить помощи.

Есть массив $array, который формируется путём запроса в таблице в базе данных.

Код:
Array
(
    [0] => stdClass Object
        (
            [email] => email@gmail.com
            [first_name] => z
            [phone_1] => 5464565464
        )

    [1] => stdClass Object
        (
            [email] => email@gmail.com
            [first_name] => Игорь
            [phone_1] => 45645645654
        )
)

Мне необходимо его изменить на такой вид:

PHP:
[
  {
    "email": "email@gmail.com",
    "variables": {
      "name": "z",
      "phone": "5464565464"
    }
  },
  {
    "email": "email@gmail.com",
    "variables": {
      "name": "Иван",
      "phone": "5545521466"
    }
  }
]

Речь идет не о JSON, а именно о вложенности и изменении названия свойств.
 

Menro

web, seo, email, hack
Регистрация
27 Янв 2008
Сообщения
689
Реакции
138
Сделал, спасибо за внимание.

Код:
$db =&JFactory::getDBO();
$query = "SELECT `email`, `first_name`, `phone_1` FROM `order_userinfos`";
$db->setQuery($query);
$result = $db->loadObjectList();

$array = array();
foreach ($result as $key => $value) {
    $array = [
    "email" =>$value->email,
    "variables" => array(
         "phone" => $value->phone_1,
        "name" => $value->first_name
    )
    ];
}

Если это криво, и не правильно, то буду признателен за правильные решения.
 

UJy

Постоялец
Регистрация
23 Авг 2011
Сообщения
385
Реакции
146
Добрый день!
Извините, но сам догнать не могу. Попытки что-то придумать, пока безуспешны. Поэтому вынужден попросить помощи.

Есть массив $array, который формируется путём запроса в таблице в базе данных.

Код:
Array
(
    [0] => stdClass Object
        (
            [email] => email@gmail.com
            [first_name] => z
            [phone_1] => 5464565464
        )

    [1] => stdClass Object
        (
            [email] => email@gmail.com
            [first_name] => Игорь
            [phone_1] => 45645645654
        )
)

Мне необходимо его изменить на такой вид:

PHP:
[
  {
    "email": "email@gmail.com",
    "variables": {
      "name": "z",
      "phone": "5464565464"
    }
  },
  {
    "email": "email@gmail.com",
    "variables": {
      "name": "Иван",
      "phone": "5545521466"
    }
  }
]

Речь идет не о JSON, а именно о вложенности и изменении названия свойств.
Вариант с пересборкой нового массива "в лоб" не подходит?
Код:
$new_array = [];

foreach($your_current_array as $key => $array)
{
    $new_array[] = 
        {
            'email' => $array->email, 
            'variables' => 
                {
                    'name' => $array->first_name,
                    'phone' => $array->phone_1
                }
        }
}

var_dump($new_array);
Ну либо тем же форичом пройтись и добавить новое своство, которое содержит набор предыдущих...
Код:
foreach($your_current_array as $key => $array)
{
    $your_current_array[$key]->variables = 
        {
            'name' => $array->first_name,
            'phone' => $array->phone_1
        }
}
На выходе должны получить почти что нужно:
Код:
Array
(
    [0] => stdClass Object
        (
            [email] => email@gmail.com
            [first_name] => z
            [phone_1] => 5464565464
            [variables] => {
                [name] => "z",
                [phone] => "5545521466"
            }
        )

    [1] => stdClass Object
        (
            [email] => email@gmail.com
            [first_name] => Игорь
            [phone_1] => 45645645654
            [variables] => {
                [name] => "Игорь",
                [phone] => "45645645654"
            }
        )
)
 

Java

Профессор
Регистрация
14 Окт 2011
Сообщения
166
Реакции
46
в запросе к БД указать что нужен массив, а не объект.
 
Сверху