61

次の連想配列があります$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]が返されることが期待されます。この問題を解決するために誰か助けてもらえますか? 前もって感謝します。

4

7 に答える 7

112

$dataforeach を次のように変更します。操作を実行した後、戻り変数にデータを割り当てません。

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

コードパッドのデモ。

于 2013-03-18T08:00:12.227 に答える
46

これもうまくいきます!

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

代替案をどうぞ!

于 2013-05-05T08:27:53.393 に答える
2

最適な方法は、「array_walk」ネイティブ関数内でラムダを使用して必要な変更を行うことです。

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

参照「&」として渡されると、値は配列内で更新されます。

于 2020-10-01T03:53:57.170 に答える
0
foreach($data as $value)
{
    $value["transaction_date"] = date('d/m/Y',$value["transaction_date"]);
}
return $data;
于 2013-03-18T08:02:50.590 に答える