Пересоздание массива. Foreach

118
09 августа 2021, 03:30

Что-то туплю на ровном месте..

Есть многомерный массив:

var_export($arrays):
array (
    'items' => 
    array (
      0 => 
      array (
        'id' => 5182729,
        'custom_fields' => 
        array (
          0 => 
          array (
            'id' => 175255,
            'values' => 
            array (
              0 => 
              array (
                'value' => '+7 (912) 345-67-89',
              ),
            ),
          ),
      ),
    ),
  ),
)

Мне необходимо пересобрать в массив попроще, вида:

array(500){
    array(2){
        ['id'] => int(5182729)
        ['phone'] => string(18) "+7 (912) 345-67-89"
    }
}

Делаю циклы: (понимаю, что можно без такого кол-ва foreach, мне так быстрее найти было нужное)

$arrays(); //старый массив
$new_array = array(); //новый массив
foreach ($arrays as $array) {
   foreach ($array as $item) {
       foreach ($item as $i){
           $lead_id = $value['id'];
           $user_phone = $value['custom_fields'][0]['values'][0]['value'];
           $new_array['user']['phone']=preg_replace("/[^0-9]/", "", $user_phone);
           $new_array['user']['lead_id']= $lead_id;
       }
   }
}

На что результат получается с проходом только 1 раз:

array(1) {
  ["user"]=>
  array(2) {
    ["phone"]=>
    string(11) "79123456789"
    ["lead_id"]=>
    int(5182729)
  }
}

Как сделать нормальное заполнение нового массива?

Answer 1
$arr = [];
foreach($array['items'] as $key => $value){
    $arr[$key]['user']['id'] = $value['id'];
    $arr[$key]['user']['phone'] = $value['custom_fields'][0]['values'][0]['value'];
}
Answer 2

я немного подправил ваш код

$new_array = array(); //новый массив
foreach ($arrays as $array) {
   foreach ($array as $item) {
       $lead_id = $item['id'];
       $user_phone = $item['custom_fields'][0]['values'][0]['value'];
       $user_phone = preg_replace("/[^0-9]/", "", $user_phone);
       $new_array[] = ['id' => $lead_id, 'phone'=> user_phone];
   }
}
print_r($new_array);

вот, что получается

Array
(
    [0] => Array
        (
            [id] => 5182729
            [phone] => 79123456789
        )
)

Но я не уверен, что таким образом вы не потеряете какие-то данные

READ ALSO
ajax post на сервер без ssl

ajax post на сервер без ssl

Возможно ли как-то выполнять ajax запрос на сервер без ssl с сервера с ssl?

254
проблемы с кодировкой при скачивание файла php

проблемы с кодировкой при скачивание файла php

скачиваю с сервера DOC файл, но после скачивания в файле весь текст становится иероглифамиПредположил, что проблемы с кодировкой, но не знаю...

150
Как настроить отправку формы с лендинга

Как настроить отправку формы с лендинга

первая - для заказа консультации, вторая - для оформления подпискиПодскажите, каким образом можно настроить отправку писем мне на почту с данного...

177