2017-04-05 1 views
0

var_dump ($ fields);를 사용하여 아래에 출력 된 PHP 배열이 있습니다. 모든 I "상태"키와 새로운 배열을 생성하고자키 값이 일치하는 배열을 새 그룹화 된 배열로 옮깁니다.

array() { 
    [ 0 ] => array() { 
     [ "state" ] => string(3) "nsw" 
     [ "address" ] => string(13) "8 Test Street" 
     [ "phone" ] => string(12) "0000 000 000" 
     [ "email" ] => string(15) "[email protected]" 
    } 
    [ 1 ] => array() { 
     [ "state" ] => string(2) "wa" 
     [ "address" ] => string(13) "5 Test Street" 
     [ "phone" ] => string(12) "0000 000 000" 
     [ "email" ] => string(15) "[email protected]" 
    } 
    [ 2 ] => array() { 
     [ "state" ] => string(3) "qld" 
     [ "address" ] => string(13) "3 Test Street" 
     [ "phone" ] => string(12) "0000 000 000" 
     [ "email" ] => string(15) "[email protected]" 
    } 
    [ 3 ] => array() { 
     [ "state" ] => string(3) "nsw" 
     [ "address" ] => string(13) "1 Test Street" 
     [ "phone" ] => string(12) "0000 000 000" 
     [ "email" ] => string(15) "[email protected]" 
    } 
} 

$는 필드에 존재하는 그 같은 아래 위에 해당 값을 이동.

array() { 
    [ "nsw" ] => array() { 
     [0] => array() { 
      [ "address" ] => string(13) "8 Test Street" 
      [ "phone" ] => string(12) "0000 000 000" 
      [ "email" ] => string(15) "[email protected]" 
     } 
     [1] => array() { 
      [ "address" ] => string(13) "1 Test Street" 
      [ "phone" ] => string(12) "0000 000 000" 
      [ "email" ] => string(15) "[email protected]" 
     } 
    } 
    [ "wa" ] => array() { 
     [0] => array() { 
      [ "address" ] => string(13) "5 Test Street" 
      [ "phone" ] => string(12) "0000 000 000" 
      [ "email" ] => string(15) "[email protected]" 
     } 
    } 
    [ "qld" ] => array() { 
     [0] => array() { 
      [ "address" ] => string(13) "3 Test Street" 
      [ "phone" ] => string(12) "0000 000 000" 
      [ "email" ] => string(15) "[email protected]" 
     } 
    } 
} 

아무도 도와 주실 수 없습니까? 행운을 빌어 답을 찾으십시오.

감사합니다.

답변

1

조금만 로직.

<?php 

$fields = [ 
    [ 
     "state" => "nsw", 
     "address" => "8 Test Street", 
     "phone" => "0000 000 000", 
     "email" => "[email protected]", 
    ], 
    [ 
     "state" => "wa", 
     "address" => "5 Test Street", 
     "phone" => "0000 000 000", 
     "email" => "[email protected]", 
    ], 
    [ 
     "state" => "qld", 
     "address" => "3 Test Street", 
     "phone" => "0000 000 000", 
     "email" => "[email protected]", 
    ], 
    [ 
     "state" => "nsw", 
     "address" => "1 Test Street", 
     "phone" => "0000 000 000", 
     "email" => "[email protected]", 
    ] 
]; 

$new = []; 
foreach ($fields as $field) { 
    $state = $field['state']; 
    unset($field['state']); 
    $new[$state][] = $field; 
} 

print_r($new); 

Array 
(
    [nsw] => Array 
     (
      [0] => Array 
       (
        [address] => 8 Test Street 
        [phone] => 0000 000 000 
        [email] => [email protected] 
       ) 

      [1] => Array 
       (
        [address] => 1 Test Street 
        [phone] => 0000 000 000 
        [email] => [email protected] 
       ) 

     ) 

    [wa] => Array 
     (
      [0] => Array 
       (
        [address] => 5 Test Street 
        [phone] => 0000 000 000 
        [email] => [email protected] 
       ) 

     ) 

    [qld] => Array 
     (
      [0] => Array 
       (
        [address] => 3 Test Street 
        [phone] => 0000 000 000 
        [email] => [email protected] 
       ) 

     ) 

) 
+0

감사합니다. Alexandr! 매우 감사. –

0

이것은 깔끔하게 처리해야합니다.

$grouped = array_reduce($addresses, function ($grouped, $address) { 
    return array_merge_recursive($grouped, [ 
     $address['state'] => [ $address ], 
    ]); 
}, []); 
관련 문제