2013-03-22 163 views
0

我試圖從表中獲取數據並將其存儲在名爲「items」的數組中,然後使用索引訪問它。我收到一個錯誤「未定義的偏移量:0」。代碼中有什麼錯誤?array in loop php

$i=0; 

while($row = mysql_fetch_array($sqlquery)) 
{ 
    $name = $row['name']; 

    $items = array(); 

    $items[$i] = $name; 

    $i= $i +1; 
} 

echo $items[0]; 
echo $items[1]; 
+0

定義I值'$ I = 0;' – 2013-03-22 12:04:39

+0

檢查這個問題:http://stackoverflow.com/questions/4455548/storing-values-from-mysql- table-into-an-array-in-php – 2013-03-22 12:05:30

+3

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – 2013-03-22 12:05:53

回答

4

您正在每次迭代中重新創建數組。結果數組的初始化(代碼中的$items)應該在循環之外。例如: -

$items = array(); 

while($row = mysql_fetch_array($sqlquery, MYSQL_ASSOC)) 
{ 

    $name = $row['name']; 

    $items[] = $name; 
} 
echo $items[0]; 

echo $items[1]; 

注:mysql_*功能已被棄用,使用mysqli_*PDO

+0

榮譽給你。這工作。謝謝:) – 2013-03-22 12:08:20

+1

@Vivek歡迎您。你應該接受解決你的問題的答案。 :) – Leri 2013-03-22 12:10:13

0
  1. 前while循環
  2. while循環之前加入$items = array();添加$i = 0;,從裏面取出它,而循環

    $i   = 0; 
    $items = array(); 
    while($row = mysql_fetch_assoc($sqlquery)) 
    
0

使用本

while($row = mysql_fetch_array($sqlquery)) 

{ 

$name = $row['name']; 

$items = array(); 

$items[] = $name; 




} 
if(isset($items[0])){ 

echo $items[0]; 
} 

if(isset($items[1])){ 
echo $items[1]; 
} 

不需要使用$ i

2

你正在重新聲明你的數組每次在循環內不正確。

$items = array(); 
while($row = mysql_fetch_assoc($sqlquery)) 
{ 
    $items[] = $name = $row['name']; 
} 
echo $items[0]; 
echo $items[1]; 

注意:Please, don't use mysql_* functions in new code。他們不再維護and are officially deprecated。請參閱red box?請改爲了解prepared statements,並使用PDOMySQLi - this article將幫助您決定哪個。如果您選擇PDO,here is a good tutorial

0

$items = array()移出while循環。它已被多次重新定義並且$item[0]丟失。您只能得到結果數組中的最後一項。

5

定義$items在循環外,在循環外定義$i = 0並更改爲mysql_fetch_assoc並嘗試執行此操作。

$i = 0; 
$items = array(); 
while($row = mysql_fetch_assoc($sqlquery)) { 
    $name = $row['name']; 

    $items[$i] = $name; 
    $i++; 
} 
echo $items[0]; 
echo $items[1]; 
0

你不應該在循環中聲明你的變量,並且如果你只是添加到一維數組中,你可以關閉$ i。

$items = array(); 

while($row = mysql_fetch_assoc($sqlquery)) 
{ 
    $items[] = $row['name']; 
} 

print_r($items); 
0

尼斯和乾淨的版本:

while($row = mysql_fetch_array($sqlquery)) 

{ 
    $items[] = $row['name']; 

} 


echo $items[0]; 
echo $items[1]; 
0

在每次循環要初始化您的數組。

做這樣的:

<?php 
$items = array(); 
while($row = mysql_fetch_array($sqlquery)) { 
    $name = $row['name']; 
    $items[] = $name; 
} 
echo $items[0]; 
echo $items[1]; 
?>