0

这是我的代码:

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

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

4

5 回答 5

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"
)

这可能是您的双重输入的来源。如果是这样,请参阅此处的文档

于 2013-06-12T13:28:32.203 回答
0

1) Remove the double keys from the $total_columns in the first place.

2) Check if key is string or integer.

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

3) See array_unique from http://php.net/manual/en/function.array-unique.php

于 2013-06-12T13:24:48.953 回答
0
print_r($total_columns); 

结果:

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

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

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

让我们知道它的起源。

谢谢

于 2013-06-12T14:13:17.723 回答
0

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

于 2013-06-12T15:23:51.927 回答
0

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

    for($i=0;$i<sizeof($total_columns);$i++)
    {
        echo "<td><b>{$total_columns[i]}</b></td>";
    }
于 2013-06-12T13:30:01.580 回答