Intereting Posts
Как получить значение hash (#) в строке запроса Загрузка изображений с использованием php, но без обновления страницы Функции повторного использования Symfony2 в контроллерах Swift Mailer – не удается отправить почту и не удается найти журналы ошибок Сайт, созданный в Codeigniter, загружает только домашнюю страницу Как перенаправить на другую страницу через 5 минут? ZF2: как мне получить экземпляр ServiceManager из пользовательского класса Данные сеанса Codeigniter потеряны после перенаправления Как я могу заставить свой PHP-скрипт работать в определенное время каждый день? Curl и pcntl_fork () Как перенаправить на динамический URL-адрес в javascript Ошибка PHP RegExpr Unkown modifier '(' Ошибка подключения базы данных в php CONCAT ON Запрос в объединении более двух таблиц таблицы mysql Нужен эффективный во времени метод импорта большого файла CSV через PHP в несколько таблиц MySQL

Как обновить значение конкретного ключа в ассоциативном массиве в PHP?

У меня есть следующий ассоциативный массив с именем $data

 Array ( [0] => Array ( [transaction_user_id] => 359691e27b23f8ef3f8e1c50315cd506 [transaction_no] => 19500912050218 [transaction_total_amount] => 589.00 [transaction_date] => 1335932419 [transaction_status] => cancelled ) [1] => Array ( [transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d [transaction_no] => 36010512050819 [transaction_total_amount] => 79.00 [transaction_date] => 1336476696 [transaction_status] => cancelled ) [2] => Array ( [transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d [transaction_no] => 19020512050820 [transaction_total_amount] => 299.00 [transaction_date] => 1336476739 [transaction_status] => cancelled ) [3] => Array ( [transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d [transaction_no] => 27050512050821 [transaction_total_amount] => 79.00 [transaction_date] => 1336476927 [transaction_status] => cancelled ) [4] => Array ( [transaction_user_id] => 8e9050a3646c98342b9ba079fba80982 [transaction_no] => 12070512050822 [transaction_total_amount] => 129.00 [transaction_date] => 1336477032 [transaction_status] => cancelled ) ) 

и я хочу преобразовать значение ключа [transaction_date] в читаемый пользователем формат (т. е. mm / dd / yyyy). Для этого я написал следующий код в функции, которая возвращает весь массив:

  foreach($data as $value) { $value[transaction_date]=date('d/m/Y',$value[transaction_date]); } return $data; 

Моя проблема в том, что я получаю один и тот же массив без изменения значения [transaction_date] для всех элементов массива. На самом деле ожидается, что массив с обновленными значениями для [transaction_date] будет возвращен. Может ли кто-нибудь помочь мне решить эту проблему? Заранее спасибо.

Измените свой foreach на что-то вроде этого. Вы не назначаете данные обратно к возвращаемой переменной $data после выполнения этой операции.

 foreach($data as $key => $value) { $data[$key]['transaction_date'] = date('d/m/Y',$value['transaction_date']); } 

Codepad DEMO.

Это тоже сработает!

 foreach($data as &$value) { $value['transaction_date'] = date('d/m/Y', $value['transaction_date']); } 

Yay для альтернатив!

Функция PHP array_walk () предназначена специально для изменения массива.

Попробуй это:

 array_walk ( $data, function (&$key) { $key["transaction_date"] = date('d/m/Y',$key["transaction_date"]); } ); 
 foreach($data as $value) { $value["transaction_date"] = date('d/m/Y',$value["transaction_date"]); } return $data; 

Используйте функцию array_walk_recursive для многозначного массива.

 array_walk_recursive($data, function (&$v, $k) { if($k == 'transaction_date'){ $v = date('d/m/Y',$v); } });