问题描述
我正在尝试使用 foreach 循环在 PHP 中创建一个多维数组.这是目前为止的代码:
$levels = array('low', 'medium', 'high');$attributes = array('fat', 'quantity', 'ratio', 'label');foreach ($levels as $key => $level):foreach ($attributes as $k =>$attribute):$variables[] = $attribute .'_' .$级别;Endforeach;Endforeach;echo ''.print_r($levels,1) .'</pre>';echo ''.print_r($variables,1) .'</pre>';这段代码的输出是一个一维数组;然而,这不是本意.所需的数组应如下所示:
应该如何修改代码才能达到目标?
解决方案您就快到了.只需将级别添加到数组创建中:)
$levels = array('low', 'medium', 'high');$attributes = array('fat', 'quantity', 'ratio', 'label');foreach ($levels as $key => $level):foreach ($attributes as $k =>$attribute):$variables[$level][] = $attribute .'_' .$级别;//将 $variables[] 改为 $variables[$level][]Endforeach;Endforeach;echo ''.print_r($levels,1) .'</pre>';echo ''.print_r($variables,1) .'</pre>';输出
数组([低] =>大批([0] =>脂肪_低[1] =>数量_低[2] =>比率_低[3] =>标签低)[中] =>大批([0] =>肥中[1] =>数量_中等[2] =>比率_中[3] =>label_medium)[高] =>大批([0] =>脂肪高[1] =>数量_高[2] =>比率_高[3] =>标签高))I am trying to create a multidimensional array in PHP using a foreach loop. Here is the code thus far:
$levels = array('low', 'medium', 'high'); $attributes = array('fat', 'quantity', 'ratio', 'label'); foreach ($levels as $key => $level): foreach ($attributes as $k =>$attribute): $variables[] = $attribute . '_' . $level; endforeach; endforeach; echo '<pre>' . print_r($levels,1) . '</pre>'; echo '<pre>' . print_r($variables,1) . '</pre>';The output from this code is a single dimension array; however, that is not the intent. The desired array should look like this:
How should the code be modified to achieve the goal?
解决方案You're aaalmost there. Just add the level to the array creation :)
$levels = array('low', 'medium', 'high'); $attributes = array('fat', 'quantity', 'ratio', 'label'); foreach ($levels as $key => $level): foreach ($attributes as $k =>$attribute): $variables[$level][] = $attribute . '_' . $level; // changed $variables[] to $variables[$level][] endforeach; endforeach; echo '<pre>' . print_r($levels,1) . '</pre>'; echo '<pre>' . print_r($variables,1) . '</pre>';Output
Array ( [low] => Array ( [0] => fat_low [1] => quantity_low [2] => ratio_low [3] => label_low ) [medium] => Array ( [0] => fat_medium [1] => quantity_medium [2] => ratio_medium [3] => label_medium ) [high] => Array ( [0] => fat_high [1] => quantity_high [2] => ratio_high [3] => label_high ) )