while valor vacio recorrer obtener manejo indice elementos elemento declarar buscar asociativo array agregar php arrays associative-array

vacio - ¿Cómo actualizar el valor de la clave específica en una matriz asociativa en PHP?



recorrer array asociativo php (5)

Tengo una siguiente matriz asociativa llamada $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 ) )

y quiero convertir el valor de la clave [transaction_date] en formato legible por el usuario (es decir, mm / dd / aaaa). Para eso, escribí el siguiente código en una función que devuelve toda la matriz:

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

Mi problema es que obtengo la misma matriz sin cambiar el valor de [transaction_date] para todos los elementos de la matriz. En realidad, se espera que se devuelva una matriz con valores actualizados para [transaction_date] . ¿Alguien puede ayudarme a resolver este problema? Gracias por adelantado.


¡Esto también funcionará!

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

¡Yay por alternativas!


Cambia tu foreach a algo como esto, no estás asignando datos a tu variable de retorno $data después de realizar la operación en eso.

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

Codepad DEMO.


La función PHP array_walk() es específicamente para alterar la matriz.

Prueba esto:

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


Use la función array_walk_recursive para una matriz multiconfesional.

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


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