PHP数组迭代以展平所有可能的结果

PHP数组迭代以展平所有可能的结果,php,arrays,sorting,Php,Arrays,Sorting,我不知道我要做什么,所以我似乎找不到类似的答案 我正在尝试创建一个如下所示的数组: array ( 'birds' => array( 'parakeet', 'conure', 'woodpecker'), 'color' => array( 'red', 'blue', 'green' ), 'size' => array( 'large', 'medium',

我不知道我要做什么,所以我似乎找不到类似的答案

我正在尝试创建一个如下所示的数组:

array (
'birds' => array(
      'parakeet',
      'conure',
      'woodpecker'),
'color' => array(
      'red',
      'blue',
      'green'
 ),
 'size' => array(
       'large',
       'medium',
       'small'
 ));
迭代所有可能的排列,如下所示

   array(
      array('parakeet','red','large'),
      array('parakeet','red','medium'),
      array('parakeet','red','small'),
      array('parakeet','blue','large'),
      array('parakeet','blue','medium'),
      array('parakeet','blue','small'),
      array('parakeet','green','large'),
      array('parakeet','green','medium'),
      array('parakeet','green','small'),
      array('conure','red','large'),  
      ..... etc 
   );

任何帮助都将不胜感激!提前谢谢你

只需在每个关卡上为鸟、颜色和大小创建一个降压循环即可。然后创建一个临时容器并持续合并它:

$data = [[]]; // initialize empty container
foreach ($arr as $key => $values) {
    $tmp = []; // store it in here
    foreach ($data as $d) {
        foreach ($values as $value) {
            $tmp[] = array_merge($d, [$value]); // then continually merge
        }
    }
    $data = $tmp;
}

只需循环您需要的内容,并在运行过程中构建一个新阵列:

$newarray = $temparray = array();

foreach ( $oldarray['birds'] as $bird )
{
   $temparray[] = $bird;
   foreach ( $oldarray['color'] as $color )
   {
      $temparray[] = $color;
      foreach ( $oldarray['size'] as $size )
      {
          $temparray[] = $size;
      }
      $newarray[] = $temparray;
      unset ($temparray);
   }
}

谢谢Kevin,你的解决方案简单明了!我感谢你的帮助。“我似乎无法理解这一点。”迪拉克当然很高兴这有帮助