• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:規則性がある配列名のキー毎に新たな配列を生成したい)

配列名キーごとに新配列を生成する方法

このQ&Aのポイント
  • 配列名キーごとに新たな配列を生成する方法について解説します。
  • 元配列の配列名の数字が小さい順に並べ替え、キーごとに新配列を作成します。
  • 作成した配列の内容や例を紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.1

http://ideone.com/ncP9f5 <?php   $test = array(     'test_1' => array(         0 => 'dummy1_0',         1 => '',         2 => 'dummy1_2',     ),     'test_3' => array(         0 => '',         1 => 'dummy3_1',         2 => '',     ),     'test_2' => array(         0 => 'dummy2_0',         1 => '',         2 => 'dummy2_2',     ),     'test_4' => array(         0 => '',         1 => 'dummy4_1',         2 => '',     ), );   $max = 0; $result = array(); array_walk_recursive($test, function ($v) use (&$max) {     if (preg_match('/\A[^\d]++(\d++)_\d++\z/', $v, $matches)) {         $max = max((int)$matches[1], $max);     } }); if ($max > 0) {     array_walk_recursive($test, function ($v) use (&$result, &$max) {         if (preg_match('/\A[^\d]++(\d++)_(\d++)\z/', $v, $matches)) {             $title = 'result_' . ($matches[2] + 1);             if (!isset($result[$title])) {                 $result[$title] = array_fill(0, $max, '');             }             $result[$title][$matches[1] - 1] = $v;         }     }); } uksort($result, 'strnatcmp'); print_r($result);

re97
質問者

お礼

回答ありがとうございましたー

関連するQ&A