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'']);
}
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;