簡體   English   中英

我如何計算for循環數組中的多行?

[英]how do i count multiple rows in for loop with array?

我如何計算for循環數組中的多行? 當新行輸入mysql數據庫for循環計數新行為0時,兩個新行輸入mysql數據庫進行循環計數兩行為1? 我不知道為什么for loop escape first row count start from second row? 而且我如何使用數組進行多行會話?

Function.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'];
}

正如你在“我正在調用的頁面函數$ wid = get_wid($ id);”中所指出的那樣:

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

$ i> 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'];
}

這將使它更緊湊。 另一個“整潔”的提示是向所有數組變量添加“_arr”,以便您知道何時引用字符串或數組,例如

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等。最后就像你使用函數“get_wid”一樣,我會從函數中調用其他代碼。 這就是我要做的總計:

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

嘗試這個:

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]

使用foreach除外

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

檢查是否已將$ i變量聲明為外部

$wid=get_wid($id);

$max1= count($wid);

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

{

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

$_SESSION['wid2']=$wid1;

echo $_SESSION['wid2'];

}
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

目前還不清楚你在這里要做什么

試試這個

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]中的數組?

無論在哪個指數,每次都會被回應。 希望這可以幫助。

在for循環中設置$ i = 0,它將開始在數組中顯示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替換以前的session。 所以你的會話總是顯示你的mysql數據的最后一行。 希望這段代碼可以幫到你。

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++)

可能會解決你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM