PHP 在对大数组使用 for 循环时卡住

标签 php mysql arrays for-loop freeze

我在尝试运行这个脚本时遇到了一些麻烦:

<?php

$mysqli=new mysqli("localhost","root","mysqlpassword","MarcTextOldBib");
if (mysqli_connect_errno()) {echo "Failed to connect to MySQL: " . mysqli_connect_error();}
$db_abfrage = "SELECT `cid` , `field_data` FROM T1xx" ;
$j=0;
$db_ausgabe = $mysqli->query($db_abfrage);
while($row = $db_ausgabe->fetch_object()){
    $names[$j] = array( "cid"           => $row->cid,
                        "field_data"    => $row->field_data,
                     );
    $j++;
}


$mysqli->close();

echo"
<table border='1'>
<thead><tr>
<th>ID</th> <th>Name</th>
</tr></thead>";

$ID=1;
$size = count($names);

for ( $i = 0; $i <= $size; $i++ ){
    $cid = $names[$i][cid];
    echo "<tr>";

    while( $ID != $names[$i][cid] ) {
        echo "<td>".($ID)."</td>";
        echo "<td></td>";
        echo "</tr>";
        $ID++;
    }

    if( ($ID) == $names[$i][cid] ) {
        echo "<td>" . ($ID) . "</td>";
        echo "<td>" . $names[$i][field_data] . "</td>";
        echo "</tr>";
        $ID++;
    }

}

echo "</table>";

?>

当我将 for 循环设置为仅“50”而不是 count($names) 时,它就像魅力一样工作。但是当使用 count($names) 时,我的电脑完全死机了。 count($names) 是 2788。

最佳答案

将“cid”放在引号中。

改变:

$names[$i][cid]

收件人:

$names[$i]['cid']

同样的道理

$names[$i]['fieldData']

关于PHP 在对大数组使用 for 循环时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28838460/

相关文章:

php - MySQL 查询 php 条件

javascript - 数组索引值未定义,数组不是

arrays - Excel:数组公式计算一次

php - PDO:使用 foreach 和 $_POST 定义参数

PHP + Jquery - 通过 ajax 将值传递给 php 并检查变量

PHP没有错误,但数据未插入数据库

php - 代码点火器查询问题

php - Laravel - 从第三个关系开始计数

mysql - 如何查询表中最新的记录

ruby-on-rails - 通过 Regex、Ruby 拆分时保留模式字符