PHP迴圈組合數組和list的使用

來源:互聯網
上載者:User
PHP迴圈結合數組和list的使用

foreach的使用:
1.用法1

??$arr=array("張三","李四","王五","馬六");
??foreach($arr as $value)
??echo $value.'
';
?>


2.用法2

$arr=array('chinese'=>130,'math'=>140,'english'=>135,'computer'=>130);
foreach($arr as $key=>$value)
echo $key.':'.$value.'
';
?>


3.按拷貝還是引用
預設按拷貝,和函數很相似:

????$arr=array(1,2,3,4);
????foreach($arr as $value)
????$value*=2;//其實改變的是副本對原數組沒有影響
????print_r($arr);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
?>


但是可以改成引用方式,通過&符號:

????$arr=array(1,2,3,4);
????foreach($arr as &$value)
????$value*=2;
????print_r($arr);//Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
?>

4.for迴圈

$arr=array(1,2,3,4,5);
for($i=0;$iecho $arr[$i].'
';
?>


5.each/list

each用法,每次取出個4元素數組,其中0,key對應鍵;1,value對應值:

$arr = array("張三", "李四", "王五");
$bar = each($arr);
print_r($bar);//Array ( [1] => 張三 [value] => 張三 [0] => 0 [key] => 0 )
?>


list的用法:

$arr = array("張三", "李四", "王五");
list($a[0], $a[1], $a[2]) = $arr;
print_r($a);//Array ( [2] => 王五 [1] => 李四 [0] => 張三 )
?>


list結合each使用:

$arr = array("張三"=>20, "李四"=>29, "王五"=>23);
while(list($key, $value) = each($arr))
echo "$key=>$value".'
';
?>


注意while(list($key, $value) = each($arr))中each得到的4元素數組中有2個數字索引分別賦給list中2個變數。
所以

$arr = array("張三",'b'=>"李四", "王五");
list($a[0], $a[1]) = $arr;
print_r($a);//Array ( [1] => 王五 [0] => 張三 )
?>


6.多維陣列

$a = array();
$a['山東'][0] = "濟南";
$a['山東'][1] = "威海";
$a['黑龍江'][0] = "哈爾濱";
$a['黑龍江'][1] = "齊齊哈爾";

foreach ($a as $key1=>$v1) {
??echo "$key1".'
';
????????foreach ($v1 as $v2) {
????????????????echo "$v2 \n";
????????}
????????echo '
';
}
?>


7.數組函數

key取索引值

$arr = array(
????????'張三' => '濟南',
????????'李四' => '煙台',
????????'王五' => '威海',
????????'趙六' => '北京',
????????);

while ($person = current($arr)) {
????????if ($person == '威海') {
????????????????echo key($arr).'
';
????????}
????????next($arr);
}
?>

上面會得到 '王五',但是如果煙台為 ""空串,則程式執行到這裡會跳出迴圈,空串轉成false。

用for實現foreach效果:

$arr = array(
????????'百度' => 'http://www.baidu.com',
????????'Google' => 'http://www.google.com.hk',
????????'400電話' => 'http://www.my400800.cn',
????????'bing' => 'http://cn.bing.com',
????????);

for(reset($arr);$key=key($arr);next($arr))
echo $key.'
';
?>


這個問題同上,如果某個索引值計算為false也會跳出迴圈。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.