導航:首頁 > 編程語言 > php遍歷鍵值對

php遍歷鍵值對

發布時間:2022-07-16 20:31:16

php中這樣的數組怎麼遍歷

這三種方法中效率最高的是使用foreach語句遍歷數組。從PHP4開始就引入了foreach結構,是PHP中專門為遍歷數組而設計的語句,推薦大家使用。先分別介紹這幾種方法PHP中遍歷數組有三種常用的方法:

一、使用for語句循環遍歷數組;
二、使用foreach語句遍歷數組;
三、聯合使用list()、each()和while循環遍歷數組。

這三種方法中效率最高的是使用foreach語句遍歷數組。從PHP4開始就引入了foreach結構,是PHP中專門為遍歷數組而設計的語句,推薦大家使用。先分別介紹這幾種方法。

一、使用for語句循環遍歷數組

值得大家注意的是使用for語句循環遍歷數組要求遍歷的數組必須是索引數組。PHP中不僅有關聯數組而且還有索引數組,所以PHP中很少用for語句循環遍歷數組。

實例代碼如下:

代碼如下:
<?php
$arr =
array('http://www.jb51.net','腳本之家','PHP教程');
$num = count($arr);

for($i=0;$i<$num;++$i){
echo $arr[$i].'<br />';
}
?>

注釋:上例代碼中我們先計算出數組$arr中元素的個數,然後才使用在for語句,這樣做很高效的。因為如果是for($i=0;$i<
count($arr);++$i)的話,每次循環都會計算數組$arr中元素的個數,而使用上面的方式可以減去這種開銷。使用++$i也是為了提高效率,前面有文章我們提到過,建議大家再看看。

上面代碼的輸出結果為:
http://www.jb51.net
腳本之家
PHP教程

二、使用foreach語句遍歷數組

使用foreach語句循環遍歷數組有二種方式,我們使用的最多的還是第一種方式。介紹如下:
第一種方式:

foreach(array_expression as $value){
//循環體
}
實例代碼:

代碼如下:
<?php
$arr =
array('http://www.jb51.net','腳本之家','PHP教程');
foreach($arr as $value){

echo $value.'<br />';
}
?>

每次循環中,當前元素的值被賦給變數$value,並且把數組內部的指針向後移動一步。所以下一次循環中會得到數組的下一個元素,直到數組的結尾才停止循環,結束數組的遍歷。

第二種方式:
foreach(array_expression as
$key=>$value){
//循環體
}
實例代碼:
代碼如下:
<?php
//定義數組
$arr =
array('http://www.jb51.net','腳本之家','PHP教程');
foreach($arr as $k=>$v){

echo $k."=>".$v."<br />";
}
?>

三、聯合使用list()、each()和while循環遍歷數組
each()函數需要傳遞一個數組作為一個參數,返回數組中當前元素的鍵/值對,並向後移動數組指針到下一個元素的位置。

list()函數,這不是一個真正的函數,是PHP的一個語言結構。list()用一步操作給一組變數進行賦值。

實例代碼:

代碼如下:
<?php
//定義循環的數組
$arr =
array('website'=>'http://www.jb51.net','webname'=>'腳本之家')

while(list($k,$v) = each($arr)){
echo $k.'=>'.$v.'<br />';

}
?> jb51.net

❷ PHP遍歷鍵值對數組

按你這個不需要遍歷呀。

/*
你這個結構應該是下面這樣
$arr=array('cont'=>'{"username":"3123213".....}');
$arr['cont'];//這個返回的是個字元串,json格式的需要處理下
$arr['cont']=json_decode($arr['cont']);
echo$arr['cont']['username'];//這個就能輸出3123213了
*/

❸ php數組遍歷追加數組鍵值的問題

可以遍歷兩次$a,第一次取出所有的父級欄目,放入$newarr中,第二次將子欄目放入對應
的父級欄目數組中,最後使用$newarr就行
不過這是建立在只有二級欄目的基礎上,如果有三級欄目的話就還要麻煩些了

$newarr=array();
foreach($aas$key=>$value)
{
if($value['fID']==0)
{
$cid=$value['cID'];
$newarr[$cid]=$value;
unset($a[$key]);
}
}

foreach($aas$key=>$value)
{
if($value['fID']!=0)
{
$fid=$value['fID'];
$newarr[$fid]['zilanmu'][]=$value;
}
}

❹ 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多維數組遍歷求幫助

這是由多個鍵值對數組構成的二維數組,因為內層是鍵值對,外層是普通數組,

又因為內層是鍵值對,所以我們只需要遍歷外層的數組,然後依據鍵來訪問值,進行if判斷即可.

具體的php程序如下(注意去掉了user值的雙引號)

❻ 使用php Memcache模塊如何正確遍歷所有KEY以及VALUE

在php提供的用於與memcached交互的擴展模塊中有memcached與memcache,前者提供方法getAllKeys用於遍歷所有Memcached伺服器上的key,但是並不保證原子操作,而後者卻沒有提供任何方法,雖然在PHP官方
文檔中有人給出使用方法getExtendedStats來間接獲取Memcached伺服器上的所有key,但是給出的代碼是有不少坑的,如果拿來就用,對於cluster的memcached伺服器而言,有些問題就需要指出來。
下面將給出官方文檔中的代碼,並指出可能面臨的問題,代碼如下:
<?php
/**
*Functiontogetallmemcachekeys
*@authorManishPatel
*@Created:28-May-2010
*/
functiongetMemcacheKeys(){

$memcache=newMemcache;
$memcache->connect('127.0.0.1',11211)ordie("");

$list=array();
$allSlabs=$memcache->getExtendedStats('slabs');
$items=$memcache->getExtendedStats('items');
foreach($allSlabsas$server=>$slabs){
foreach($slabsAS$slabId=>$slabMeta){
$cmp=$memcache->getExtendedStats('cachemp',(int)$slabId);
foreach($cmpAS$keys=>$arrVal){
foreach($arrValAS$k=>$v){
echo$k."<br>";
}
}
}
}//EOgetMemcacheKeys()?>
在上述代碼中,如果用於獲取單個memcached伺服器上的key,是不存在任何問題,但是獲取連接池中的多個memcached所有key就存在問題,會發現列印出重復的key,問題就在於當使用getExtendedStats用去特定$slabID
上的信息時,返回的是連接池中所有的伺服器上的特定$slabId的存儲的keys信息。當$server為"127.0.0.1:11214"且$slabId為0將變數$cmp的信息列印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}
當$server為"127.0.0.1:11216"且$slabId為0將變數$cmp的信息列印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}

❼ 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 數組的處理 鍵值對處理

一個嵌套循環,加一條語句,算不上復雜吧。

<?php
$arr1=array(
array('asd'=>1,'sdf'=>1),
array('qew'=>1,'sdf'=>1),
array('zxc'=>1,'sdf'=>1),
);
$arr2=array('asd'=>'1','zxc'=>1);

foreach($arr1as$arr){
foreach($arras$key=>$val){
$arr2[$key]=isset($arr2[$key])?($arr2[$key]+$val):$val;
}
}
print_r($arr2);
exit;

❾ PHP中如何使用foreach結構遍歷數組

註:foreach只能用於數組
第一種格式遍歷給定數組$array,每次循環,當前單元的值被賦給 $value 並且數組內部的指針向前移一步(下一次循環中將會得到下一個單元)。
第二種格式也是遍歷給定的數組$array,不同的是鍵名也參與了。在每次循環中將鍵值賦給$value,將鍵名賦給變數 $key

<?

//第一種
$array=array(1,2,3,4);
foreach($array as $value){
echo $value." ";
}//輸出結果為:1 2 3 4

//第二種
foreach($array as $key=>$value){
echo $key."=>".$value." ";
}//輸出結果為:0=>1 1=>2 2=>3 3=>4

?>

閱讀全文

與php遍歷鍵值對相關的資料

熱點內容
台灣補習老師女學生電影 瀏覽:641
蘋果手機主屏幕移除app怎麼移 瀏覽:492
壓縮機冷啟動 瀏覽:791
沐風之女電影在線 瀏覽:187
matlab畫圓的命令 瀏覽:411
香港經典電影3級鬼片上身 瀏覽:470
4k超清藍光在線看電視劇 瀏覽:645
打野電影叫什麼名字 瀏覽:236
原神應急食品app不能用了怎麼辦 瀏覽:470
前沿演算法 瀏覽:667
u2 wcmov 瀏覽:794
帶搜索功能的電影網站 瀏覽:309
狂怒完整版135分鍾 瀏覽:956
叫的小姐竟然是嫂子 瀏覽:178
法國啄木鳥網址名稱 瀏覽:655
日本影院的網站 瀏覽:956
接觸網pdf 瀏覽:15
洗頭發解壓長視頻 瀏覽:705
女性抗日動作電影 瀏覽:455
食物鏈女主角的其他電影 瀏覽:239