如何在PHP关联数组更新特定键的值?(How to update specific key'

2019-07-21 20:35发布

我有一个下列关联数组名为$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]到用户可读格式(即毫米/日/年)。 对于我写在它返回整个阵列的函数以下代码:

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

    return $data;

我的问题是我得到了相同的阵列,而不改变的值[transaction_date]所有的数组元素。 实际上具有用于更新的值数组[transaction_date]有望被返回。 谁能帮我解决这个问题? 提前致谢。

Answer 1:

您的foreach更改为这样的事情,你是不是分配的数据传回返回变量$data上执行操作后。

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

键盘DEMO。



Answer 2:

这将工作呢!

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

耶替代品!



Answer 3:

PHP array_walk()函数是专门用于改变阵列。

试试这个:

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


Answer 4:

使用多教派阵列array_walk_recursive功能。

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


Answer 5:

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


文章来源: How to update specific key's value in an associative array in PHP?