PHP:我的foreach循环为每个元素提供了两个值,如何阻止它同时回显?

时间:2013-06-12 13:19:34

标签: php loops foreach key

这是我的代码:

foreach($total_columns as $value){
    echo "<td><b>{$value}</b></td>";
}

每个$值被回显两次,一个用于数字键,一个用于关联键。我该如何阻止这种情况发生?

5 个答案:

答案 0 :(得分:2)

我猜你的数组来自mysql记录? 如果是这样,那么在那里使用mysql_fetch_assoc

mysql_fetch_array would output => 
array
(
   [0] => "1"
   "foo" => "1"
   [1] => "2"
   "bar" => "2"
)


mysql_fetch_assoc outputs =>
array
(
   "foo" => "1"
   "bar" => "2"
)

这可能是您的双重条目来自的地方。 如果是,请参阅文档here

答案 1 :(得分:0)

1)首先从$ total_columns中删除双键。

2)检查密钥是字符串还是整数。

foreach($total_columns as $key => $value){
    if(gettype($key) == "integer"){
    ...
    }
}

3)参见http://php.net/manual/en/function.array-unique.php

中的array_unique

答案 2 :(得分:0)

好吧,如果你只是想让你的代码工作而不关心它为什么不尝试这个:

for($i=0;$i<sizeof($total_columns);$i++)
{
     echo "<td><b>{$value}</b></td>";
}

答案 3 :(得分:0)

print_r($total_columns); 

结果:

[13] => 100 [goods_total] => 100 [14] => 100 [vat_total] => 100 [15] => 200 [gross_total] => 200

当您尝试使用foreach打印它们时,很明显会出现重复值。

如果您可以调查$ total_columns中没有重复值,那就太棒了。仍然无法理解你从哪里得到它们。

让我们知道它的起源。

感谢

答案 4 :(得分:0)

或者只是阅读mysql_fetch_array()手册并实际正确使用第二个参数(默认:MYSQL_BOTH /您的选择:MYSQL_ASSOC)。