Heim  >  Artikel  >  Backend-Entwicklung  >  PHP循环组合数组和list的使用

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

WBOY
WBOYOriginal
2016-06-13 13:03:55971Durchsuche

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也会跳出循环。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn