这是我的嵌套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 />';
}
}
}
我从这些循环获得的输出是
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个数组。即
$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循环的每次迭代中,它应根据“options”生成数组。
如果第一次在while循环的下一次迭代中生成3个数组(如本例所示),它可能会生成2个或4个数组,具体取决于我从DB获得的相同数量的“Option”。
答案 0 :(得分:1)
目前您只是打印值而不是将其存储在数组中。您可能希望将代码更改为以下内容:
$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;
}
}
}
这将创建一个如下所示的数组:
$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>";
这是如何运作的:
我们不是打印每个值,而是将它们放入一个多维数组中,其中每个选项都作为键,值存储在键下的数组中。值得注意的是,如果您有重复的键,则值将添加到同一个$option
数组中。如果不希望出现这种情况,那么只需使用唯一标识符或,如果您不需要关联键,则只需使数组键递增每次循环迭代。
如果你想获得每个价值,你可以这样做:
echo "<pre>".print_r($options['purity'], true)."</pre>";
会打印出值Rough, Neat, Mixes, Random
。
您可以找到有关多维数组here的更多信息,其中简单解释:
多维数组是包含一个或多个数组的数组。
答案 1 :(得分:0)
您可以使用简单的数组对它们进行分类。看一下这个例子:
$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>';
答案 2 :(得分:0)
试试这个 -
<?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);
?>