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