我如何计算for循环数组中的多行?

时间:2013-03-15 08:36:34

标签: php mysql database session for-loop

如何计算for循环数组中的多行?当新行输入mysql数据库for循环计数新行为0时,两个新行输入mysql数据库进行循环计数两行为1?我不知道为什么for loop escape first row count start from second row?以及我如何与数组进行多行会话?

功能.php& Mysql查询

function get_wid($id){
    $result=mysql_query("SELECT id AS wid FROM mywishlist where pid='$id'") 
                or die("Id Problem"."<br/><br/>".mysql_error());
    $results= array();
    while($row=mysql_fetch_array($result)){
        $results[] = $row['wid'];
    }
    return $results;
}

页面功能我在哪里调用$ wid = get_wid($ id);

$wid=get_wid($id);
$max1= count($wid);
for($i>0; $i<$max1; $i++)
{
    $wid1=$wid [$i].'<br />';   
    $_SESSION['wid2']=$wid1;
    echo $_SESSION['wid2'];
}

现在我正在使用此功能现在此功能没有回显或打印计数0值未显示但值在计数1后显示?

function get_wid($id){
$result=mysql_query("SELECT id AS wid FROM mywishlist where pid='$id'") or die("Id     Problem"."<br/><br/>".mysql_error());
$results= array();
$i=1; // add the new line
while($row=mysql_fetch_array($result)){
$results[$i] = $row['wid'];
$i++;
}
return $results;
}

$wid=get_wid($id);
$max1= count($wid);
for($i=1; $i<=$max1; $i++) // changes made here
{
$wid1=$wid [$i].'<br />';   
$_SESSION['wid2']=$wid1;
echo $_SESSION['wid2'];
}

9 个答案:

答案 0 :(得分:1)

正如我已经在你的&#34; Page函数中指出的那样,我调用$ wid = get_wid($ id);&#34;:

for($i>0; $i<$max1; $i++)
{
    $wid1=$wid [$i].'<br />';   
    $_SESSION['wid2']=$wid1;
    echo $_SESSION['wid2'];
}

$ i&gt; 0应为$ i = 0

我确定这只是一个错字,但你没有宣布迭代的开始,这就是为什么它只在第一次开始之后才开始处理。我个人会保持从0开始的所有标准。

只是看看我也可以告诉你这件作品:

$results=array();
$i=1; // add the new line
while($row=mysql_fetch_array($result)){
$results[$i] = $row['wid'];
$i++;
}

将会更好:

$results=array();
while($row=mysql_fetch_array($result)){
$results[] = $row['wid'];
}

这将使它更紧凑。另一个&#34; tidy&#34;提示是添加&#34; _arr&#34;所有数组变量,以便您知道何时引用字符串或数组,例如

while($row=mysql_fetch_array($result)){
$results_arr[] = $row['wid'];
}

虽然我不确切地知道你正在努力实现什么,但我可以说你应该使用foreach循环$ wid。如上所述,当迭代从0开始时,一切都变得更容易,因为你可以这样做:

$wid=get_wid($id);

foreach($wid as $newWid) // changes made here
{  
$_SESSION['wid2']=$newWid.'<br />';
echo $_SESSION['wid2'];
}

如果你想获得任何索引或特定值,你可以使用array_keysarray_search等等。最后就像你使用函数&#34; get_wid&#34;我会从函数中调用其他代码。这就是我要做的事情:

function get_wid($id){
$result=mysql_query("SELECT id AS wid FROM mywishlist where pid='$id'") or die("Id     Problem"."<br/><br/>".mysql_error());
$results_arr= array();
while($row=mysql_fetch_array($result)){
$results_arr[] = $row['wid'];
}
return $results_arr;
}

function sessionWid($id) {
$wid_arr=get_wid($id);
foreach($wid_arr as $wid) // changes made here
{  
$_SESSION['wid2']=$wid.'<br />';
echo $_SESSION['wid2'];
}

// call sessionWid($id) where you want
sessionWid($id);

我打算把它留在那里,但不知道为什么你会想要一个分页符 - <br /> - 在你的会话中。你知道如果你想在每个数组值之间有一个分页符,你可以像这样输出它:

echo implode('<br />',get_wid($id));

通过保持清洁,你可以最大限度地节省可以杀死男人的小虫子的时间!_g

答案 1 :(得分:0)

试试这个:

for($i=0; $i<count(get_wid($id)); $i++)
{
   $wid1=$wid[$i].'<br />';   
   $_SESSION['wid2']=$wid1;
   echo $_SESSION['wid2'];
}

$i>0已更改为$i=0

$wid [$i]中有一个空格我将其更改为$wid[$i]

答案 2 :(得分:0)

使用foreach除

之外
$wids = get_wid($id);
foreach($wids as $wid )
{
  $wid1=$wid.'<br />';   
  $_SESSION['wid2']=$wid1;
  echo $_SESSION['wid2'];
}

答案 3 :(得分:0)

检查是否已将$ i变量声明为

$wid=get_wid($id);

$max1= count($wid);

for($i=0; $i<$max1; $i++)

{

$wid1=$wid [$i].'<br />';  

$_SESSION['wid2']=$wid1;

echo $_SESSION['wid2'];

}

答案 4 :(得分:0)

function get_wid($id){
$result=mysql_query("SELECT id AS wid FROM mywishlist where pid='$id'") or die("Id Problem"."<br/><br/>".mysql_error());
$results= array();
$i=1; // add the new line
while($row=mysql_fetch_array($result)){
$results[$i] = $row['wid'];
$i++;
}
return $results;
}

$wid=get_wid($id);
$max1= count($wid);
for($i=1; $i<=$max1; $i++) // changes made here
{
$wid1=$wid [$i-1].'<br />';   
$_SESSION['wid2'][$i]=$wid1;
echo $_SESSION['wid2'];
}

查询返回3条记录的意思 现在,

$results[1]='1';
$results[2]='2';
$results[3]='3';
echo count($wid);


print_r($_SESSION['wid2']);
Array ( [1] => 1 [2] => 2 [3] => 3)

$_SESSION['wid2'][1]='1';
$_SESSION['wid2'][2]='2';
$_SESSION['wid2'][3]='3';

并返回所有值。如果需要$ _SESSION ['wid2']的计数

echo count($_SESSION['wid2']);

计数=→3

答案 5 :(得分:0)

目前还不清楚你在这里要做什么

试试这个

for($i=0; $i<count(get_wid($id)); $i++)
{
echo $i;
 }

它将回显0,1,2,3,.........最多1计数(get_wid($ id)

$ wid [0],$ wid [1],$ wid [2]的数组中还有什么?

每次在该指数处都会被回应。 希望这有帮助。

答案 6 :(得分:0)

在for循环中设置$ i = 0,它将开始在0

的数组中显示记录

答案 7 :(得分:0)

只需从您之前的代码中查看此内容

即可
$wid=get_wid($id);
$max1= count($wid);
for($i=0; $i<=$max1; $i++)
{
    $wid1=$wid [$i].'<br />';   
    $_SESSION['wid'.($i+1)]=$wid1;
}

print_r($_SESSION);

我想在这里提一下,在你的代码中总是用new替换以前的会话。所以你的会话总是显示你的mysql数据的最后一行。希望这段代码可以帮助你。

答案 8 :(得分:0)

for($i=1; $i<=$max1; $i++) // changes made here
{
$wid1=$wid [$i].'<br />';   
$_SESSION['wid2']=$wid1;
echo $_SESSION['wid2'];
}

我猜你是从第二行开始的,这就是为什么它没有显示第一行(第0行)

改变

for($i=1; $i<=$max1; $i++)

for($i=0; $i<=$max1; $i++)

可能会解决您的问题。