【问题标题】:PHP only parses first element in arrayPHP 只解析数组中的第一个元素
【发布时间】:2014-03-24 17:45:40
【问题描述】:

我正在研究一个元素周期表,其中我从我的数据库中检索所有元素。我想将元素放在元素周期表中各自的位置。

例如:氢气在第 1 行,单元格 1 - 氦气在第 1 行,第 18 单元格。因此,这两个单元格之间的单元格应该是空白的。

问题是,当我运行我的 for 循环并比较位置(存储在我的数据库中)和我给每个单元格的 ID(与数据库中的位置结果相同)时,它只解析第一个元素然后停止。

它返回第一个 1-1(氦气 - 第 1 行,第 1 单元格)并按应有的方式对其进行解析。然后是下一个,即 1-2(第 1 行,第 2 单元格),从这里开始就停止了。

这是我的查询

// SQL Query for retrieving elements
$query = "
    SELECT 
        id, name, symbol, row, cell
    FROM 
        elements
    ORDER BY
        id
";
$objResult = $objConnection->query($query);

while ($row = $objResult->fetch_assoc()) {
    // Creating two-dimensional, associative array containing each element
    $ele[] = array(
        'id' => $row['id'],
        'name' => $row['name'],
        'symbol' => $row['symbol'],
        'position' => $row['row'].'-'.$row['cell']
    );
}

还有我的 for 循环

// Element counter
$cnt = 0;

// Creating tr's and td's
for($i = 1; $i <= 9; $i++) {
    echo '<tr>';
        for($h = 1; $h <= 18; $h++) {
            $cell = $i.'-'.$h;
            $pos = $ele[$cnt]['position'];

            echo '<td id="'.$cell.'">';
            if($pos == $cell) {
                echo $ele[$cnt]['symbol'];
            }
            echo '</td>';
            $cnt++;
        }
echo '</tr>';

我希望你能帮助我,因为我很困惑。

【问题讨论】:

  • 您要创建第 9 行第 18 列的表吗?为什么你的 start 变量等于 1 而不是 0 ?数组索引以 0 开头
  • 因为它与数组索引无关,而是存储在我的数据库中的位置。

标签: php mysql arrays variables for-loop


【解决方案1】:

您应该重新考虑您的数组并使其具有关联性。为什么不将数组的键设为字段。像这样:

$ele[ $row['row'].'-'.$row['cell'] ] = array(
    'id' => $row['id'],
    'name' => $row['name'],
    'symbol' => $row['symbol']
);

然后在您的循环中您可以轻松找到所需的元素:

for($i = 1; $i <= 9; $i++) {
echo '<tr>';
    for($h = 1; $h <= 18; $h++) {
        $cell = $i.'-'.$h;

        echo '<td id="'.$cell.'">';
        if(isset($ele[$cell]) {
            echo $ele[$cell]['symbol'];
        }
        echo '</td>';
        $cnt++;
    }
echo '</tr>';

【讨论】:

    猜你喜欢
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    相关资源
    最近更新 更多