这是我的代码:
foreach($total_columns as $value){
echo "<td><b>{$value}</b></td>";
}
每个 $value 都会被回显两次,一次用于数字键,一次用于关联键。我该如何阻止这种情况发生?
我猜你的数组来自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"
)
这可能是您的双重输入的来源。如果是这样,请参阅此处的文档
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
print_r($total_columns);
结果:
[13] => 100 [goods_total] => 100 [14] => 100 [vat_total] => 100 [15] => 200 [gross_total] => 200
很明显,当您尝试使用 foreach 打印它们时会得到重复的值。
如果您可以调查 $total_columns 中没有重复值,那就太好了。仍然无法理解你从哪里得到它们。
让我们知道它的起源。
谢谢
或者只是阅读 mysql_fetch_array() 的手册并正确使用第二个参数(默认值:MYSQL_BOTH / 您的选择:MYSQL_ASSOC)。
好吧,如果你只是想让你的代码工作而不关心它为什么不尝试这个:
for($i=0;$i<sizeof($total_columns);$i++)
{
echo "<td><b>{$total_columns[i]}</b></td>";
}