Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表中显示的结果不正确_Php_Foreach_Html Table - Fatal编程技术网

Php 表中显示的结果不正确

Php 表中显示的结果不正确,php,foreach,html-table,Php,Foreach,Html Table,我对PHP一无所知,所以这个问题可能很愚蠢。我找了几个小时也找不到答案 我使用foreach循环进行了一个查询,但它没有在我创建的表中正确显示。foreach中的部分显示了最后一个国家旁边的所有字段 我试着在所有其他的地方加上,但结果都一样,没有出现在正确的栏中 $query = "SELECT COUNT(landofbirth) as c, landofbirth FROM dog WHERE landofbirth IS NOT NULL GROUP BY landofbirth ORD

我对PHP一无所知,所以这个问题可能很愚蠢。我找了几个小时也找不到答案

我使用foreach循环进行了一个查询,但它没有在我创建的表中正确显示。foreach中的部分显示了最后一个国家旁边的所有字段

我试着在所有其他的地方加上,但结果都一样,没有出现在正确的栏中

$query = "SELECT COUNT(landofbirth) as c, landofbirth FROM dog WHERE landofbirth IS NOT NULL GROUP BY landofbirth ORDER BY c desc LIMIT 1000"; 
$result = mysql_query($query) ;
$values = array();
$pct = array();
$total = 0;

while ($line = mysql_fetch_array($result)) {
    echo "<tr><td>";
    $values[$line[1]] = $line[0];
    $total += $line[0];
    echo "$line[1]</td><td> ";

    echo "$line[0] </td><td>"; }

    foreach($values as $key => $value) {
    $pct[$key] = $value/$total ; 
    $count2 = $pct[$key] * 100;
    $count = number_format($count2, 2);
    echo "$count %"; }
    echo "</td></tr>";
$query=“选择计数(landofbirth)为c,landofbirth不为空的dog中的landofbirth按landofbirth顺序分组按c描述限制1000”;
$result=mysql\u query($query);
$values=array();
$pct=array();
$total=0;
而($line=mysql\u fetch\u数组($result)){
回声“;
$values[$line[1]]=$line[0];
$total+=$line[0];
回显“$line[1]”;
回显“$line[0]”;}
foreach($key=>$value的值){
$pct[$key]=$value/$total;
$count2=$pct[$key]*100;
$count=number\u格式($count2,2);
回显“$count%”;}
回声“;

您的代码有点乱码,可能是因为移动了太多次

我总是发现一个一个地分离显示项目很有帮助,甚至可以将它们分别放在单独的行上,并且远离“计算”代码,以便在编辑代码时获得更好的视觉效果

我不确定这是否是您想要的,但我认为此显示将非常接近(和/或易于修改):

while($line=mysql\u fetch\u数组($result)){
$values[$line[1]]=$line[0];
$total+=$line[0];
}
foreach($key=>$value的值){
$pct[$key]=$value/$total;
$count2=$pct[$key]*100;
$count=number\u格式($count2,2);
回声';
回显“.$key.”;
回显“.$value.”;
回显'.$count'.%';
回声';
}
旁注(不针对具体答案)

建议不要在PHP中使用不推荐使用的
mysql
扩展进行开发。相反,您应该使用替代和维护或扩展。两者的使用都更加安全,并提供了一些有益的功能,如预先准备好的语句

您的代码有点乱七八糟,可能是因为移动了太多次

我总是发现一个一个地分离显示项目很有帮助,甚至可以将它们分别放在单独的行上,并且远离“计算”代码,以便在编辑代码时获得更好的视觉效果

我不确定这是否是您想要的,但我认为此显示将非常接近(和/或易于修改):

while($line=mysql\u fetch\u数组($result)){
$values[$line[1]]=$line[0];
$total+=$line[0];
}
foreach($key=>$value的值){
$pct[$key]=$value/$total;
$count2=$pct[$key]*100;
$count=number\u格式($count2,2);
回声';
回显“.$key.”;
回显“.$value.”;
回显'.$count'.%';
回声';
}
旁注(不针对具体答案)

建议不要在PHP中使用不推荐使用的
mysql
扩展进行开发。相反,您应该使用替代和维护或扩展。两者的使用都更加安全,并提供了一些有益的功能,如预先准备好的语句

似乎应该一个接一个地完成while循环。i、 e尝试将foreach循环放入while循环。您需要将foreach移动到while循环中。如果我将foreach循环放入while循环中,则百分比与第一个国家的百分比不正确,例如100%,您似乎应该在foreach循环之后完成while循环。i、 e尝试将foreach循环置于while循环中。您需要将foreach循环移至while循环中。如果我将foreach循环置于while循环中,则百分比不正确,例如,第一个国家的百分比为100%,代码有效!这非常感谢,现在我也看到了我做错了什么,并知道了下一次:)是的,它是从移动的一切,它得到的,如混乱。代码工作!这是非常感谢,现在我也看到了我做错了什么,并知道了下一次:)是的,这是从移动与它得到的一切,如混乱。
while ($line = mysql_fetch_array($result)) {
    $values[$line[1]] = $line[0];
    $total += $line[0];
}

foreach($values as $key => $value) {
    $pct[$key] = $value/$total ; 
    $count2 = $pct[$key] * 100;
    $count = number_format($count2, 2);

    echo '<tr>';
        echo '<td>' . $key . '</td>';
        echo '<td>' . $value . '</td>';
        echo '<td>' . $count . '%</td>';
    echo '</tr>';
}