2013-03-22 126 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]; 
?>