foreach的使用:
1.用法1

<?php

$arr=array(
“张三”
,
“李四”
,
“王五”
,
“马六”
);

foreach
($arr
as
$value)

echo $value.'<br/>’;

?>

<?php

$arr=array(1,2,3,4);

foreach
($arr
as
&$value)

$value*=2;

print_r($arr);//Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )

?>

<?php

$arr=array(1,2,3,4,5);

for
($i=0;$i<count($arr);$i++)

echo $arr[$i].'<br/>’;

?>

<?php

$arr = array(
“张三”
,
“李四”
,
“王五”
);

$bar = each($arr);

print_r($bar);//Array ( [1] => 张三 [value] => 张三 [0] => 0 [key] => 0 )

?>

<?php

$arr = array(
“张三”
,
“李四”
,
“王五”
);

list($a[0], $a[1], $a[2]) = $arr;

print_r($a);
//Array ( [2] => 王五 [1] => 李四 [0] => 张三 )

?>

<?php

$arr = array(
“张三”
=>20,
“李四”
=>29,
“王五”
=>23);

while
(list($key, $value) = each($arr))

echo
“$key=>$value”
.'<br/>’;

?>

<?php

$arr = array(
“张三”
,’b’=>
“李四”
,
“王五”
);

list($a[0], $a[1]) = $arr;

print_r($a);
//Array ( [1] => 王五 [0] => 张三 )

?>

<?php

$a = array();

$a[‘山东’][0] =
“济南”
;

$a[‘山东’][1] =
“威海”
;

$a[‘黑龙江’][0] =
“哈尔滨”
;

$a[‘黑龙江’][1] =
“齐齐哈尔”
;

foreach
($a
as
$key1=>$v1) {

echo
“<b>$key1</b>”
.'<br/>’;

foreach
($v1
as
$v2) {

echo
“$v2 \n”
;

}

echo ‘<br/>’;

}

?>

<?php

$arr = array(

‘张三’ => ‘济南’,

‘李四’ => ‘烟台’,

‘王五’ => ‘威海’,

‘赵六’ => ‘北京’,

);

while
($person = current($arr)) {

if
($person == ‘威海’) {

echo key($arr).'<br />’;

}

next($arr);

}

?>

<?php

$arr = array(

‘张三’ => ‘济南’,

‘李四’ => ‘烟台’,

‘王五’ => ‘威海’,

‘赵六’ => ‘北京’,

);

for
(reset($arr);$key=key($arr);next($arr))

echo $key.'<br/>’;

?>
1.用法1

<?php

$arr=array(
“张三”
,
“李四”
,
“王五”
,
“马六”
);

foreach
($arr
as
$value)

echo $value.'<br/>’;

?>
2.用法2
<?php
$arr=array(‘chinese’=>130,’math’=>140,’english’=>135,’computer’=>130);
foreach($arr as $key=>$value)
echo $key.’:’.$value.'<br/>’;
?>
$arr=array(‘chinese’=>130,’math’=>140,’english’=>135,’computer’=>130);
foreach($arr as $key=>$value)
echo $key.’:’.$value.'<br/>’;
?>
3.按拷贝还是引用
默认按拷贝,和函数很相似:
<?php
$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] => 1 [1] => 2 [2] => 3 [3] => 4 )
?>
但是可以改成引用方式,通过&符号:

<?php

$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循环

<?php

$arr=array(1,2,3,4,5);

for
($i=0;$i<count($arr);$i++)

echo $arr[$i].'<br/>’;

?>
5.each/list
each用法,每次取出个4元素数组,其中0,key对应键;1,value对应值:

<?php

$arr = array(
“张三”
,
“李四”
,
“王五”
);

$bar = each($arr);

print_r($bar);//Array ( [1] => 张三 [value] => 张三 [0] => 0 [key] => 0 )

?>
list的用法:

<?php

$arr = array(
“张三”
,
“李四”
,
“王五”
);

list($a[0], $a[1], $a[2]) = $arr;

print_r($a);
//Array ( [2] => 王五 [1] => 李四 [0] => 张三 )

?>
list结合each使用:

<?php

$arr = array(
“张三”
=>20,
“李四”
=>29,
“王五”
=>23);

while
(list($key, $value) = each($arr))

echo
“$key=>$value”
.'<br/>’;

?>
注意while
(list($key, $value) = each($arr))中each得到的4元素数组中有2个数字索引分别赋给list中2个变量。
所以

<?php

$arr = array(
“张三”
,’b’=>
“李四”
,
“王五”
);

list($a[0], $a[1]) = $arr;

print_r($a);
//Array ( [1] => 王五 [0] => 张三 )

?>
6.多维数组

<?php

$a = array();

$a[‘山东’][0] =
“济南”
;

$a[‘山东’][1] =
“威海”
;

$a[‘黑龙江’][0] =
“哈尔滨”
;

$a[‘黑龙江’][1] =
“齐齐哈尔”
;

foreach
($a
as
$key1=>$v1) {

echo
“<b>$key1</b>”
.'<br/>’;

foreach
($v1
as
$v2) {

echo
“$v2 \n”
;

}

echo ‘<br/>’;

}

?>
7.数组函数
key取键值

<?php

$arr = array(

‘张三’ => ‘济南’,

‘李四’ => ‘烟台’,

‘王五’ => ‘威海’,

‘赵六’ => ‘北京’,

);

while
($person = current($arr)) {

if
($person == ‘威海’) {

echo key($arr).'<br />’;

}

next($arr);

}

?>
上面会得到 ‘王五’,但是如果烟台为 “”空串,则程序执行到这里会跳出循环,空串转成false。
用for实现foreach效果:

<?php

$arr = array(

‘张三’ => ‘济南’,

‘李四’ => ‘烟台’,

‘王五’ => ‘威海’,

‘赵六’ => ‘北京’,

);

for
(reset($arr);$key=key($arr);next($arr))

echo $key.'<br/>’;

?>
这个问题同上,如果某个键值计算为false也会跳出循环。
最后出个小题目:
自己动手写个函数实现关联数组的键值互换,即键变成值,而值作为键?
转载于:https://blog.51cto.com/xcf007/102334