<?php //Пополнить справочник названиями полей. $fields=[ 4=> ['name'=>'value', 'is_text'=>0], 6=> ['name'=>'feedback','is_text'=>1], 11=>['name'=>'city', 'is_text'=>0], 12=>['name'=>'', 'is_text'=>1] //Причина, по которой не надо ставить ?? вместо ?: при подстановках. ]; $src=[ [ 'entry_id' => 3, 'element_id' => 4, //Эта строка сериализована криво //'value' => 'a:2:{i:2;s:14:"Имя";i:4;s:18:"Фамилия";}' 'value' => 'a:2:{i:2;s:6:"Имя";i:4;s:14:"Фамилия";}' ], [ 'entry_id' => 3, 'element_id' => 6, 'value' => 'Тестовый отзыв' ], [ 'entry_id' => 3, 'element_id' => 11, 'value' => 'a:1:{i:2;s:16:"г. Москва";}' ], [ 'entry_id' => 3, 'element_id' => 12, 'value' => 'блаблабла' ], ]; $dst = []; foreach($src as $row){ //Версия, исключающая появление предупреждения //$field=(isset($fields[$row['element_id']]['name']) && $fields[$row['element_id']]['name']) ? $fields[$row['element_id']]['name'] : $row['element_id']; //Версия, использующая игнорирование предупреждений о несуществующих переменных, но работающая быстрее и читается легче $field=$fields[$row['element_id']]['name'] ?: $row['element_id']; //Искать через in_array пару десятков значений в миллионном цикле - не лучшее решение. //$dst[$row['entry_id']][$field] = (in_array($row['element_id'], $text_fields)) ? $row['value'] : unserialize($row['value']); $dst[$row['entry_id']][$field] = $fields[$row['element_id']]['is_text'] ? $row['value'] : unserialize($row['value']); } print_r($dst);
You have javascript disabled. You will not be able to edit any code.