本文目錄一覽:
PHP 數組遍歷方法大全(foreach,list,each)
在PHP中數組分為兩類:
數字索引數組和關聯數組。
其中數字索引數組和C語言中的數組一樣,下標是為0,1,2…
而關聯數組下標可能是任意類型,與其它語言中的hash,map等結構相似。
下面介紹PHP中遍歷關聯數組的三種方法:
方法1:foreach
複製代碼
代碼如下:
?php
$sports
=
array(
‘football’
=
‘good’,
‘swimming’
=
‘very
well’,
‘running’
=
‘not
good’);
foreach
($sports
as
$key
=
$value)
{
echo
$key.”:
“.$value.”br
/”;
?
輸出結果:
football:
good
swimming:
very
well
running:
not
good
方法2:each
複製代碼
代碼如下:
?php
$sports
=
array(
‘football’
=
‘good’,
‘swimming’
=
‘very
well’,
‘running’
=
‘not
good’);
while
($elem
=
each($sports))
{
echo
$elem[‘key’].”:
“.$elem[‘value’].”br
/”;
?
方法3:list
each
複製代碼
代碼如下:
?php
$sports
=
array(
‘football’
=
‘good’,
‘swimming’
=
‘very
well’,
‘running’
=
‘not
good’);
while
(list($key,
$value)
=
each($sports))
{
echo
$key.”:
“.$value.”br
/”;
?
PHP遍曆數組的方法匯總
今天有個朋友問我一個問題php遍曆數組的方法,告訴她了幾個。順便寫個文章總結下,如果總結不全還請朋友們指出
第一、foreach()
foreach()是一個用來遍曆數組中數據的最簡單有效的方法。
?php
$urls=
array(‘aaa’,’bbb’,’ccc’,’ddd’);
foreach
($urls
as
$url){
echo
“This
Site
url
is
$url!
br
/”;
}
?
顯示結果:
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
/”;
}
?
顯示結果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
第三、for()運用for遍曆數組
?php
$urls=
array(‘aaa’,’bbb’,’ccc’,’ddd’);
for
($i=
0;$i
count($urls);
$i++){
$str=
$urls[$i];
echo
“This
Site
url
is
$str.br
/”;
}
?
顯示結果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
有時候有人也在問這幾種遍曆數組的方法哪個更快捷些呢,下面做個簡單的測試就明白了
===========
下面來測試三種遍曆數組的速度
===========
一般情況下,遍歷一個數組有三種方法,for、while、foreach。其中最簡單方便的是foreach。下面先讓我們來測試一下共同遍歷一個有50000個下標的一維數組所耗的時間。
?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
/’;
?
測試結果:
Used
time
of
for:0.0228429(s)
Used
time
of
while:0.0544658(s)
Used
time
of
foreach:0.0085628(s)
經過反覆多次測試,結果表明,對於遍歷同樣一個數組,foreach速度最快,最慢的則是while。從原理上來看,foreach是對數組副本進行操作(通過拷貝數組),而while則通過移動數組內部指標進行操作,一般邏輯下認為,while應該比foreach快(因為foreach在開始執行的時候首先把數組複製進去,而while直接移動內部指標。),但結果剛剛相反。原因應該是,foreach是PHP內部實現,而while是通用的循環結構。所以,在通常應用中foreach簡單,而且效率高。在PHP5下,foreach還可以遍歷類的屬性。
以上所述就是本文的全部內容了,希望大家能夠喜歡。
php數組函數,遍曆數組的幾種方法
介紹三種。
// for、 foreach、 each and list
// for 循環方式遍曆數組,僅可遍歷索引數組
$ary = [‘hello’, ‘world’];
for ($key = 0; $key count($ary); $key ++) {
echo $key . $ary[$key];
}
// foreach 專門用來遍曆數組的語言結構
foreach ($ary AS $key = $value) {
echo $key . $value;
}
// each 配合 list 循環遍歷
while (list($key, $value) = each($ary)) {
echo $key . $value;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/197980.html