首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP在嵌套循环中创建单独的数组

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

Stack Overflow用户
提问于 2016-03-02 11:09:20
回答 3查看 1.1K关注 0票数 0

下面是我嵌套的foreach循环,用于从数据库获取数据

代码语言:javascript
复制
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 />';

      }
  }
}

我从这些循环中得到的输出是

代码语言:javascript
复制
option = Type , value = GOLD
option = Type , value = SILVER
option = Type , value = BRONZE
option = Purity , value = Rough
option = Purity , value = Neat
option = Purity , value = Mixed
option = Purity , value = Random
option = Model , value = Old
option = Model , value = latest
option = Model , value = GOLD 1.0
option = Model , value = GOLD 1.1
option = Model , value = GOLD 1.2
option = Model , value = GOLD 1.3

我想要实现的是保存每个相同的“选项”值数组。例如,从上面的输出,我应该得到3个数组。i.e

代码语言:javascript
复制
$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个数组(如本例所示),它可能会根据我从DB获得的相同数量的“选项”生成2个或4个数组。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-02 11:27:40

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

代码语言:javascript
复制
$options = array();

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

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

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

            //Store each value by their collective key
            $options[$option][] = $each_value;
        }
    }
}

这将创建一个如下所示的数组:

代码语言:javascript
复制
$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'),
);

你可以像这样在屏幕上看到这个:

代码语言:javascript
复制
echo "<pre>".print_r($options, true)."</pre>";

是如何工作的:

我们不是打印每个值,而是将它们放入多维数组中,在该数组中,每个选项充当键,值存储在键下的数组中。值得注意的是,如果您有重复的键,这些值将被添加到同一个$option数组中。如果这种行为是不可取的,那么只需使用唯一的标识符,或者如果您不需要将键关联起来,则只需使数组键在每次循环迭代中递增即可。

如果您想要得到每个值,您可以:

代码语言:javascript
复制
echo "<pre>".print_r($options['purity'], true)."</pre>";

它将打印出值Rough, Neat, Mixes, Random

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

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

票数 2
EN

Stack Overflow用户

发布于 2016-03-02 11:18:33

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

代码语言:javascript
复制
$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>';
票数 0
EN

Stack Overflow用户

发布于 2016-03-02 11:26:39

试试这个-

代码语言:javascript
复制
    <?php
    $arr = array();
    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 />';
               $arr[$option][]=$each_value;
          }
      }
    }
    print_r($arr);
    ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35745495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档