Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在嵌套循环中创建单独的数组_Php_Arrays_Loops_Foreach_Nested - Fatal编程技术网

PHP在嵌套循环中创建单独的数组

PHP在嵌套循环中创建单独的数组,php,arrays,loops,foreach,nested,Php,Arrays,Loops,Foreach,Nested,下面是从数据库获取数据的嵌套foreach循环 while($attrib_rec = tep_db_fetch_array($attributes)) { foreach( $options_values as $option => $options_value ){ foreach( $options_value as $options_value_key => $each_value ){ //make separate arrays of "opt

下面是从数据库获取数据的嵌套foreach循环

while($attrib_rec = tep_db_fetch_array($attributes)) {

foreach( $options_values as $option => $options_value ){

foreach( $options_value as $options_value_key => $each_value ){

           //make separate arrays of "option"
           print 'option = '.$option.' , value = '.$each_value.'<br />';

      }
  }
}
我想要实现的是将每个相同的“选项”值保存到一个数组中。 e、 从上面的输出我应该得到3个数组。i、 e

$type = array('GOLD', 'SILVER', 'BRONZE');
$purity = array('Rough', 'Neat', 'mixed', 'Random');
$model = array('Old', 'Latest', 'GOLD 1.0', 'GOLD 1.1', 'GOLD 1.2', 'GOLD 1.3');
在while循环的每次迭代中,它应该根据“选项”生成数组的数量


如果它在while循环的下一次迭代中第一次生成3个数组(如本例所示),它可能会生成2个或4个数组,这取决于我从DB获得的相同数量的“选项”。

您可以使用一个简单数组对它们进行分类。看看这个例子:

$sorted_options = array();
while($attrib_rec = tep_db_fetch_array($attributes)) {
    while($attrib_rec = tep_db_fetch_array($attributes)) {

        foreach( $options_values as $option => $options_value ){

            foreach( $options_value as $options_value_key => $each_value ){

                sorted_options[$option][] = $each_value;
            }
        }
    }
}
echo '<pre>'.print_r($sorted_options, true).'<pre>';
$sorted_options=array();
while($attrib\u rec=tep\u db\u fetch\u数组($attributes)){
while($attrib\u rec=tep\u db\u fetch\u数组($attributes)){
foreach($options\u值为$option=>$options\u值){
foreach($options\u value作为$options\u value\u key=>$each\u value){
已排序的_选项[$option][]=$each_值;
}
}
}
}
回显“”。打印选项($sorted\u options,true)。“”;

您可以使用一个简单的数组对它们进行分类。看看这个例子:

$sorted_options = array();
while($attrib_rec = tep_db_fetch_array($attributes)) {
    while($attrib_rec = tep_db_fetch_array($attributes)) {

        foreach( $options_values as $option => $options_value ){

            foreach( $options_value as $options_value_key => $each_value ){

                sorted_options[$option][] = $each_value;
            }
        }
    }
}
echo '<pre>'.print_r($sorted_options, true).'<pre>';
$sorted_options=array();
while($attrib\u rec=tep\u db\u fetch\u数组($attributes)){
while($attrib\u rec=tep\u db\u fetch\u数组($attributes)){
foreach($options\u值为$option=>$options\u值){
foreach($options\u value作为$options\u value\u key=>$each\u value){
已排序的_选项[$option][]=$each_值;
}
}
}
}
回显“”。打印选项($sorted\u options,true)。“”;
试试这个-

$options = array(
    'type' => array('GOLD', 'SILVER', 'BRONZE'),
    'purity' => array('Rough', 'Neat', 'mixed', 'Random'),
    'model' => array('Old', 'Latest', 'GOLD 1.0', 'GOLD 1.1', 'GOLD 1.2', 'GOLD 1.3'),
);

试试这个-

$options = array(
    'type' => array('GOLD', 'SILVER', 'BRONZE'),
    'purity' => array('Rough', 'Neat', 'mixed', 'Random'),
    'model' => array('Old', 'Latest', 'GOLD 1.0', 'GOLD 1.1', 'GOLD 1.2', 'GOLD 1.3'),
);

此时,您只是打印值,而不是将其存储在数组中。您可能希望将代码更改为以下内容:

echo "<pre>".print_r($options, true)."</pre>";
echo "<pre>".print_r($options['purity'], true)."</pre>";
这将创建一个如下所示的数组:

echo "<pre>".print_r($options, true)."</pre>";
echo "<pre>".print_r($options['purity'], true)."</pre>";
您可以这样将其显示在屏幕上:

"; 它将打印出粗略、整洁、混合、随机的值

您可以了解有关多维数组的更多信息,这简单地解释了:

多维数组是包含一个或多个数组的数组


目前,您只是打印值,而不是将其存储在数组中。您可能希望将代码更改为以下内容:

echo "<pre>".print_r($options, true)."</pre>";
echo "<pre>".print_r($options['purity'], true)."</pre>";
这将创建一个如下所示的数组:

echo "<pre>".print_r($options, true)."</pre>";
echo "<pre>".print_r($options['purity'], true)."</pre>";
您可以这样将其显示在屏幕上:

"; 它将打印出粗略、整洁、混合、随机的值

您可以了解有关多维数组的更多信息,这简单地解释了:

多维数组是包含一个或多个数组的数组


您正在使用嵌套的
foreach
循环,该循环将向输出显示,就像它正在显示一样。。。您可以使用过滤器或
分组方式
您正在使用嵌套的
foreach
循环,该循环将向输出显示,就像它正在显示它一样。。。您可以使用过滤器或分组方式谢谢@Henders的解释。我很快就要解决我的实际问题了。如果我有单独的
$type=array('GOLD','SILVER','brown'),我想知道如何实现嵌套的foreach来生成组合(每个值在另一个值上的图像)$纯度=数组(“粗略”、“整洁”、“混合”、“随机”)$型号=数组('Old'、'Latest'、'GOLD 1.0'、'GOLD 1.1'、'GOLD 1.2
、'GOLD 1.3');'我会使用
foreach($type为$base){foreach($attr1为纯度){foreach($attr2为模型){//72个组合将被生成(3*4*7)}}
谢谢@Henders的解释。我很快就要解决我的实际问题了。如果我有单独的
$type=array('GOLD','SILVER','brown'),我想知道如何实现嵌套的foreach来生成组合(每个值在另一个值上的图像)$纯度=数组(“粗略”、“整洁”、“混合”、“随机”)$型号=数组('Old'、'Latest'、'GOLD 1.0'、'GOLD 1.1'、'GOLD 1.2
、'GOLD 1.3');'我将使用
foreach($type为$base){foreach($attr1为纯度){foreach($attr2为模型){//72个组合将被生成(3*4*7)}}