我有一个名为$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]
更新值的数组。
任何人都可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:85)
将foreach更改为类似的内容,在执行操作后,您不会将数据分配回返回变量$data
。
foreach($data as $key => $value)
{
$data[$key]['transaction_date'] = date('d/m/Y',$value['transaction_date']);
}
答案 1 :(得分:30)
这也会有效!
foreach($data as &$value) {
$value['transaction_date'] = date('d/m/Y', $value['transaction_date']);
}
是的替代方案!
答案 2 :(得分:13)
PHP array_walk()函数专门用于更改数组。
试试这个:
array_walk ( $data, function (&$key) { $key["transaction_date"] = date('d/m/Y',$key["transaction_date"]); } );
答案 3 :(得分:4)
对多宗派数组使用array_walk_recursive函数。
array_walk_recursive($data, function (&$v, $k) {
if($k == 'transaction_date'){
$v = date('d/m/Y',$v);
}
});
答案 4 :(得分:1)
foreach($data as $value)
{
$value["transaction_date"] = date('d/m/Y',$value["transaction_date"]);
}
return $data;
答案 5 :(得分:0)
这是一个单一的解决方案,其中 your_field 是要设置的字段,而 new_value 是一个新值字段,可以是一个函数或单个值
foreach ($array as $key => $item) {
$item["your_field"] = "new_value";
$array[$key] = $item;
}
在您的情况下, new_value 将是date()函数
答案 6 :(得分:0)
最好的方法是在“ array_walk”本机函数中使用lambda进行所需的更改:
h3
该值在作为引用“&”传递时在数组中更新。