2014-03-24 92 views
0

我正在處理一個元素週期表,其中我從數據庫中檢索所有元素。我想將這些元素放置在元素週期表中它們各自的位置上。PHP只解析數組中的第一個元素

例如:氫在第1行,第1單元 - 氦在第1行,第18單元。因此這兩者之間的單元應該是空白的。

問題是,當我運行我的for-loop並比較存儲在我的數據庫中的位置和我給出的每個單元的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>'; 

我希望你能幫助我,CUS我很堅持。

+0

你想創建一個行9和列18表?爲什麼你的開始變量等於1,而不是0?數組索引以0開頭 – waki

+0

因爲它與數組索引無關,但存儲在我的數據庫中。 –

回答

2

您應該重新考慮您的數組並將其關聯。你爲什麼不把你的陣列的關鍵放在現場。像這樣:

$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>'; 
+0

修復它,謝謝! –

+0

這工作。非常感謝! :) –

相關問題