Home >Backend Development >PHP Tutorial > PHP循环组合数组和list的使用

PHP循环组合数组和list的使用

WBOY
WBOYOriginal
2016-06-13 13:03:551030browse

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;$i echo $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',
????????'谷歌' => '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也会跳出循环。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn