fork download
  1. <?php
  2.  
  3. $old_arr = array(
  4. 0 => array(
  5. 'area_id' => 13,
  6. 'area' => '兵庫',
  7. ),
  8. 1 => array(
  9. 'area_id' => 4,
  10. 'area' => '沖縄',
  11. ),
  12. 2 => array(
  13. 'area_id' => 15,
  14. 'area' => '愛媛',
  15. ),
  16. 3 => array(
  17. 0 => array(
  18. 'area_id' => 22,
  19. 'area' => '奈良',
  20. ),
  21. 1 => array(
  22. 'area_id' => 3,
  23. 'area' => '群馬',
  24. ),
  25. 2 => array(
  26. 'area_id' => 22,
  27. 'area' => '奈良',
  28. ),
  29. 3 => array(
  30. 'area_id' => 22,
  31. 'area' => '奈良',
  32. ),
  33. ),
  34. );
  35.  
  36. $new_arr = array();
  37. array_walk_recursive($old_arr, function($v, $k) use (&$area_id, &$new_arr) {
  38. $new_arr[$k === 'area_id' ? ($area_id = $v) : $area_id][$k] = $v;
  39. });
  40. $new_arr = array_values($new_arr);
  41.  
  42. print_r($new_arr);
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [area_id] => 13
            [area] => 兵庫
        )

    [1] => Array
        (
            [area_id] => 4
            [area] => 沖縄
        )

    [2] => Array
        (
            [area_id] => 15
            [area] => 愛媛
        )

    [3] => Array
        (
            [area_id] => 22
            [area] => 奈良
        )

    [4] => Array
        (
            [area_id] => 3
            [area] => 群馬
        )

)