當前位置:首頁 » 編程語言 » while數組php

while數組php

發布時間: 2022-04-30 13:49:39

A. php使用while循環賦值給數組

先問你幾點有關你這個代碼的問題,不然我沒辦法回答,問題都在後面的注釋處
$lp=mysql_query("SELECT * FROM zp where sID=$row[ID]");
//該查詢中$row[ID]怎麼來的,$row[ID]是在後面的循環體中定義的,這里走來就出現不出錯嗎
$lp_num=mysql_num_rows($lp);
while($row = mysql_fetch_array($lp))
{
$lp_xm[]=$row[xm];$lp_birth[]=$row[birth];$lp_dead[]=$row[dead];$lp_ID[]=$row[ID];
$q=0;
$en_num=0;
while($q<$lp_num)
{
$en=mysql_query("SELECT * FROM zp where sID=$lp_ID[$q]");//執行查詢b
$en_num=mysql_num_rows($en)+$en_num;
//上面的值 $en_num應該等於數據行數X(1+2+3+4+5+...+總行數$lp_num),但是這一步是想做什麼呢,不理解
while($row = mysql_fetch_array($en))
{
$en_xm[]=$row[xm];$en_birth[]=$row[birth];$en_dead[]=$row[dead];$en_ID[]=$row[ID];
}
echo "$en_num\n";
//問題中的不是說 輸出$en_xm嗎,怎麼輸出的是$en_num
$q++;
}
}

B. php中用while()、list()、each()遍歷數組後,數組指針是停留在數組外面還是在數組最後一個單元上

停留在最後一個單元,所以無論是while 還是each,都有替代語法endwhile,來表示結束,關閉數據連接。

C. php數組指針的問題,while each遍歷

一開始沒看出你的問題來,差點答錯了。你的問題是出現在&$value上,而不是數組的移動。
你foreach最後的$value是$name['name4']的引用,while的循環中,不斷變化著$name['name4']的值,你可以在while循環最後每次都列印完整數組看出效果。

關鍵點:變數引用在循環結束後沒有刪除,你在foreach後面加一句unset($value);就沒問題了

---邪惡的分割線---

這里涉及到數組遍歷時指針移動問題。
1、foreach循環的每次循環中,數組內部的指針向前移一步,直到越界退出
2、當foreach開始執行時,數組內部的指針會自動指向第一個單元。這意味著不需要在foreach循環之前調用reset()。
3、each()返回array數組中當前指針位置的鍵/值對並向前移動數組指針
4、如果內部指針越過了數組的末端,則each()返回FALSE

你的例子,前面的foreach遍歷會導致數組$name最終指針越界退出,然後,如果沒有使用reset($name),則$name的指針是foreach執行後的位置,是越界的,直接使用each會返回false

D. 關於PHP while循環數組相加問題

$countnum = 0;//要統計相加的變數

while($forumattach = DB::fetch($queryattach)) {
$countnum += intval($forumattach['size']);//每次都把數值添加到countnum這個變數上面
}
echo $countnum;//這樣就能得到總數了

E. php while遍歷數組

while (list($key,$val)=each($apple)) {
echo $apple[$key];
}

建議使用foreach

F. PHP中使用while循環寫入數組的方法

循環寫入示例如下(其他循環寫入原理也是一樣的):

<?php

//定義空數組
$arr=array();
//循環初始化條件
$i=1;
//根據判斷進行while循環
while($i<=10){
//寫入數組
$arr[]="元素".$i;
//遞增
$i++;
}
print_r($arr);

/*
*Array
(
[0]=>元素1
[1]=>元素2
[2]=>元素3
[3]=>元素4
[4]=>元素5
[5]=>元素6
[6]=>元素7
[7]=>元素8
[8]=>元素9
[9]=>元素10
)*/
?>

G. php foreach、while性能比較

foreach是對數組副本進行操作(通過拷貝數組),而while則通過移動數組內部指標進行操作,一般邏輯下認為,while應該比foreach快(因為foreach在開始執行的時候首先把數組復制進去,而while直接移動內部指標。),但結果剛剛相反。
在循環里進行的是數組「讀」操作,則foreach比while快:
復制代碼
代碼如下:
foreach
($array
as
$value)
{
echo
$value;
}
while
(list($key)
=
each($array))
{
echo
$array[$key];
}
在循環里進行的是數組「寫」操作,則while比foreach快:
復制代碼
代碼如下:
foreach
($array
as
$key
=>
$value)
{
echo
$array[$key]
=
$value
.
'...';
}
while
(list($key)
=
each($array))
{
$array[$key]
=
$array[$key]
.
'...';
}
總結:通常認為,foreach涉及到值復制,一定會比while慢,但實際上,如果僅僅是在循環里進行數組的讀操作,那麼foreach是很
快的,這是因為PHP採用的復制機制是「引用計數,寫時復制」,也就是說,即便在PHP里復制一個變數,最初的形式從根本上說其實
仍然是引用的形式,只有當變數的內容發生變化時,才會出現真正的復制,之所以這么做是出於節省內存消耗得目的,同時也提升了
復制的效率。這樣看來,foreach的高效讀操作就不難理解了。另外,既然foreach不適合處理數組寫操作,那麼我們可以得出一個結
論,多數情況下,類似foreach
($array
as
$key
=>
$value)形式的做數組寫操作得代碼都應該被替換成while
(list($key)
=
each($array))。這些技巧產生的速度差異在小項目里可能並不明顯,但是在類似框架這樣的大項目中,一次請求動輒便會涉及到幾
百幾千幾萬次數組循環操作,差異就會明顯放大。

H. 關於php數組while循環問題!

要不就把print_r($num);放到for循環外面,要麼就在每次列印後unset($num)一下。
因為你這個$num是數組,循環一次就累加了一次,你沒有清空就會一直累加。

熱點內容
釘鼎伺服器出口ip 發布:2025-05-15 07:13:08 瀏覽:279
移動硬碟和光碟哪個存儲時間長 發布:2025-05-15 07:04:25 瀏覽:489
壓縮一定 發布:2025-05-15 06:57:30 瀏覽:289
進棧演算法 發布:2025-05-15 06:56:02 瀏覽:215
安卓和緩存 發布:2025-05-15 06:56:02 瀏覽:428
筆記本電腦台式伺服器 發布:2025-05-15 06:40:41 瀏覽:109
4k無壓縮 發布:2025-05-15 06:02:54 瀏覽:75
hp存儲6350 發布:2025-05-15 05:40:41 瀏覽:233
怎麼更改電腦默認緩存位置 發布:2025-05-15 05:39:01 瀏覽:877
安卓qq公孫離在哪個戰區戰力最低 發布:2025-05-15 05:38:58 瀏覽:494