Intereting Posts
Как подключить несколько баз данных в инфраструктуре phalcon в то же время использовать как в классе модели не только один Почему определенные типы подготовленных запросов с использованием PDO в PHP с MySQL медленны? Каков наилучший способ вывода всех данных из таблицы на страницу без сбоя страницы? изменить locale symfony 2.3 Улучшить хеширование паролей со случайной солью как отправлять встроенные изображения в электронную почту, используя php и html Условная инструкция mySQL. Если true UPDATE, если false INSERT Невозможно найти libmysqlclient под / usr. при создании PHP 5.2 из источника на Ubuntu 12.4 как получить первый и последний дни данного месяца Magento – проблема с созданием настраиваемого модуля PHP ZipArchive не поддерживает файлы UTF8 для открытия В чем разница между локальным значением и значением ведущего Объединение значений каждого массива в массив массивов в PHP Не получать сообщение об ошибке в ajax () метод jquery как я могу исправить продолжительность времени, чтобы заполнить форму

php заменить ключи массива

Я использую один запрос mysql для создания многомерного массива для вложенных результатов (категорий и подкатегорий).

запрос

SELECT `categories`.`cat_title`, `subcategories`.`sub_cat_id`, `subcategories`.`sub_cat_title` FROM (`categories`) LEFT JOIN `subcategories` ON `subcategories`.`cat_id` = `categories`.`cat_id` ORDER BY `categories`.`cat_title 

Создание многомерного массива

 $array = array(); foreach ($query->result_array() as $row): //query result as a pure array $array[$row['cat_title']][] = $row['sub_cat_title']; endforeach; return $array; 

Вышеупомянутые категории возвратов и их соответствующие подкатегории.

  Array ( [Art] => Array ( [0] => Graphic Design [1] => Painting ) [Literature] => Array ( [0] => Science Fiction [1] => Poetry [2] => Fiction ) [Science] => Array ( [0] => Environmental ) ) 

Можно ли заменить ключи массива данными запроса, например, подкатегорией id sub_cat_id ? Например

 [Literature] => Array ( [8] => Science Fiction [94] => Poetry [5] => Fiction ) 

Да, установите его в цикле:

 $array[ $row['cat_title'] ][ $row['sub_cat_id'] ] = $row['sub_cat_title']; 

Но $array[$row['cat_title']] не установлен, поэтому вы должны заранее добавить эту проверку:

 if( !isset( $array[$row['cat_title']])) { $array[$row['cat_title']] = array(); } 

Ваш исходный код не нуждается в этой проверке, поскольку $array[] не будет генерировать никаких уведомлений / предупреждений, но при попытке установить конкретный ключ, который будет генерировать уведомление / предупреждение, если переменная еще не объявлена ​​как массив ,

Вы могли бы сделать что-то вроде этого:

 foreach($array as $key=>$val){ unset($array[$key]); $newKey = //New value $array[$newKey] = $val]; } с foreach($array as $key=>$val){ unset($array[$key]); $newKey = //New value $array[$newKey] = $val]; }