2013-03-15 50 views
5

我如何計算循環數組中的多行?當新行進入mysql數據庫循環計數新行爲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']; 
} 

回答

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]

0

使用的foreach除了

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

仍爲循環轉義第一行計數從第二行開始 – 2013-03-15 08:50:55

+0

使用'var_export($ wids)'查看整個數組信息。可能問題取決於數據庫信息 – Alireza41 2013-03-15 08:56:05

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']; 

} 
+0

仍爲循環轉義第一行計數從第二行開始 – 2013-03-15 08:51:33

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'; 

和返回,如果你需要的所有values.and $ _SESSION ['wid2']的計數

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

計數=> 3

+0

for循環轉義第一行計數從第二行開始 – 2013-03-15 08:54:29

+0

我使用了你的函數 $ wid = get_wid($ id); $ max1 = count($ wid); ($ i = 0; $ i <$ max1; $ i ++)//在此處所做的更改 { $ wid1 = $ wid [$ i]。'
'; $ _SESSION ['wid2'] = $ wid1; echo $ _SESSION ['wid2']; } 爲什麼是逃生0值? – 2013-03-15 09:01:08

+0

($ i = 1; $ i <= $ max1; $ i ++)//在此處所做的更改 { $ wid1 = $ wid [$ i-1]。'
'; $ _SESSION ['wid2'] = $ wid1; echo $ _SESSION ['wid2']; } //現在它的工作請檢查這一點。 – MKV 2013-03-15 09:41:28

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]數組中有什麼?

無論在哪個索引都會每次回顯出來。 希望這有助於。

+0

是的,這很可能是問題包含在數據庫列中。只要看一下plist = $ id的wishlist表中id列的內容即可。 – eoin 2013-03-15 09:11:13

+0

啊,我想你需要在數組和循環上做一些教程,它可能是最好的方法。然後回到你的問題 – eoin 2013-03-15 09:41:26

0

設置$ I = 0在for循環已經在你的「頁函數指出當我打電話$ WID = get_wid($ ID),就開始顯示了在0

1

在數組記錄;「:

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

通過保持乾淨的東西,你會defintely拯救小錯誤時,可以殺死一個男人_G

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

我想在這裏提到,在您的代碼中,您總是將新的會話替換爲新會話。所以你的會話總是顯示你的mysql數據的最後一行。希望這段代碼能幫助你。

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

可能會解決你的問題。