foreach 只是php中最常用的函數(shù),其本身是并不會耗費太多的系統(tǒng)運行內(nèi)存的。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、鎮(zhèn)康網(wǎng)站維護、網(wǎng)站推廣。
造成你讀取數(shù)據(jù)太慢的原因一般是出現(xiàn)在服務(wù)器上,或者說你的電腦配置低運行這些代碼需要多花一點時間;
也有可能是你的數(shù)據(jù)庫數(shù)據(jù)太多了,一次性讀取出來會很卡,這個時候你就需要分頁顯示這些數(shù)據(jù)了。
需要修改php.ini
max_execution_time = 30
另外這個程序……
$bm = mysql_num_rows(mysql_query("$sql"));
$ba = mysql_num_rows(mysql_query("$sqa"));//得到科目一的人數(shù)
$bb = mysql_num_rows(mysql_query("$sqb"));//得到科目二的人數(shù)
$bc = mysql_num_rows(mysql_query("$sqb"));//得到同時選擇2科的人數(shù)
你select count(*) 會快幾百倍!?。。。?!
其實一個sql就可以解決全部問題……
估計你也沒有建索引,沒分數(shù),就提示你“group by”。
今天有個朋友問我一個問題php遍歷數(shù)組的方法,告訴她了幾個。順便寫個文章總結(jié)下,如果總結(jié)不全還請朋友們指出
第一、foreach()
foreach()是一個用來遍歷數(shù)組中數(shù)據(jù)的最簡單有效的方法。
?php
$urls=
array('aaa','bbb','ccc','ddd');
foreach
($urls
as
$url){
echo
"This
Site
url
is
$url!
br
/";
}
?
顯示結(jié)果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
第二、while()
和
list(),each()配合使用。
?php
$urls=
array('aaa','bbb','ccc','ddd');
while(list($key,$val)=
each($urls))
{
echo
"This
Site
url
is
$val.br
/";
}
?
顯示結(jié)果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
第三、for()運用for遍歷數(shù)組
?php
$urls=
array('aaa','bbb','ccc','ddd');
for
($i=
0;$i
count($urls);
$i++){
$str=
$urls[$i];
echo
"This
Site
url
is
$str.br
/";
}
?
顯示結(jié)果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
有時候有人也在問這幾種遍歷數(shù)組的方法哪個更快捷些呢,下面做個簡單的測試就明白了
===========
下面來測試三種遍歷數(shù)組的速度
===========
一般情況下,遍歷一個數(shù)組有三種方法,for、while、foreach。其中最簡單方便的是foreach。下面先讓我們來測試一下共同遍歷一個有50000個下標的一維數(shù)組所耗的時間。
?php
$arr=
array();
for($i=
0;
$i
50000;
$i++){
$arr[]=
$i*rand(1000,9999);
}
function
GetRunTime()
{
list($usec,$sec)=explode("
",microtime());
return
((float)$usec+(float)$sec);
}
######################################
$time_start=
GetRunTime();
for($i=
0;
$i
count($arr);
$i++){
$str=
$arr[$i];
}
$time_end=
GetRunTime();
$time_used=
$time_end-
$time_start;
echo
'Used
time
of
for:'.round($time_used,
7).'(s)br
/br
/';
unset($str,
$time_start,
$time_end,
$time_used);
######################################
$time_start=
GetRunTime();
while(list($key,
$val)=
each($arr)){
$str=
$val;
}
$time_end=
GetRunTime();
$time_used=
$time_end-
$time_start;
echo
'Used
time
of
while:'.round($time_used,
7).'(s)br
/br
/';
unset($str,
$key,
$val,
$time_start,
$time_end,
$time_used);
######################################
$time_start=
GetRunTime();
foreach($arr
as$key=
$val){
$str=
$val;
}
$time_end=
GetRunTime();
$time_used=
$time_end-
$time_start;
echo
'Used
time
of
foreach:'.round($time_used,
7).'(s)br
/br
/';
?
測試結(jié)果:
Used
time
of
for:0.0228429(s)
Used
time
of
while:0.0544658(s)
Used
time
of
foreach:0.0085628(s)
經(jīng)過反復(fù)多次測試,結(jié)果表明,對于遍歷同樣一個數(shù)組,foreach速度最快,最慢的則是while。從原理上來看,foreach是對數(shù)組副本進行操作(通過拷貝數(shù)組),而while則通過移動數(shù)組內(nèi)部指標進行操作,一般邏輯下認為,while應(yīng)該比foreach快(因為foreach在開始執(zhí)行的時候首先把數(shù)組復(fù)制進去,而while直接移動內(nèi)部指標。),但結(jié)果剛剛相反。原因應(yīng)該是,foreach是PHP內(nèi)部實現(xiàn),而while是通用的循環(huán)結(jié)構(gòu)。所以,在通常應(yīng)用中foreach簡單,而且效率高。在PHP5下,foreach還可以遍歷類的屬性。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());//連接你的數(shù)據(jù)庫
mysql_select_db("mydb");//選擇你的數(shù)據(jù)庫
$result = mysql_query("SELECT `name` FROM data_boy WHERE `id`='2' LIMIT 0, 60");//執(zhí)行SQL查詢語句,搜索出60條數(shù)據(jù)
while ($row = mysql_fetch_array($result)) {
echo "姓名:".$row[name]."br";
/*補充一句,此處也可以是:
echo "姓名:".$row[0]."br";此處"mysql_fetch_array"默認返回的既有 關(guān)聯(lián)數(shù)組(字段作為鍵名),也有數(shù)字索引數(shù)組*/
}
mysql_free_result($result);//釋放結(jié)果
你用網(wǎng)頁的方式,讓人點擊,服務(wù)器采集,簡直是弱爆了。每個人的點擊循環(huán)1000次,來個100人同時點,你要用的是普通的虛擬機就不行了。
最好是換種方式實現(xiàn),不要通過網(wǎng)頁進行采集。
可以非常簡單的在數(shù)據(jù)庫的表,創(chuàng)建一個采集隊列,后臺執(zhí)行一個crontab的計劃任務(wù),去完成隊列里的采集任務(wù)。
文章題目:php遍歷數(shù)據(jù)太多,php遍歷數(shù)據(jù)太多會怎么樣
當(dāng)前URL:http://jinyejixie.com/article22/hojpjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站改版、響應(yīng)式網(wǎng)站、動態(tài)網(wǎng)站、面包屑導(dǎo)航、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)