programing

열 정수 값을 날짜 식으로 변환

itmemos 2023. 8. 5. 09:55
반응형

열 정수 값을 날짜 식으로 변환

나는 다음과 같은 이름의 연상 배열을 가지고 있습니다.$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]반환될 것으로 예상됩니다.

이 문제는 어떻게 해결할 수 있습니까?

각을 다음과 같은 것으로 변경합니다. 반환 변수에 데이터를 다시 할당하지 않습니다.$data그것에 대한 수술을 한 후에.

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

코드패드 데모.

이것도 효과가 있을 거예요!

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

대안에 찬성합니다!

PHP array_walk() 함수는 특히 배열을 변경하기 위한 것입니다.

사용해 보십시오.

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

다중 분파 배열에는 array_walk_recursive 함수를 사용합니다.

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

가장 좋은 방법은 "array_walk" 기본 함수 내에서 람다를 사용하여 필요한 변경을 하는 것입니다.

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

이 값은 참조 "&"로 전달될 때 배열에서 업데이트됩니다.

이 단일 솔루션은 your_field는 설정할 필드이고 new_value는 함수 또는 단일 값을 사용할 수 있는 새 값 필드입니다.

foreach ($array as $key => $item) {
   $item["your_field"] = "new_value";
   $array[$key] = $item;
}

이 경우 new_value는 date() 함수가 됩니다.

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

언급URL : https://stackoverflow.com/questions/15472033/convert-column-integer-values-into-date-expressions

반응형