PHP的100个知识点–1枚举数组

  • Post author:
  • Post category:php


foreach的使用:

1.用法1

InBlock.gif
<?php

InBlock.gif
$arr=array(

“张三”

,

“李四”

,

“王五”

,

“马六”

);

InBlock.gif

foreach

($arr

as

$value)

InBlock.gif
echo $value.'<br/>’;

InBlock.gif
?>

2.用法2

<?php

$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 )

?>

但是可以改成引用方式,通过&符号:

InBlock.gif
<?php

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

InBlock.gif

foreach

($arr

as

&$value)

InBlock.gif
$value*=2;

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

InBlock.gif
?>

4.for循环

InBlock.gif
<?php

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

InBlock.gif

for

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

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

InBlock.gif
?>

5.each/list

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

InBlock.gif
<?php

InBlock.gif
$arr = array(

“张三”

,

“李四”

,

“王五”

);

InBlock.gif
$bar = each($arr);

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

InBlock.gif
?>

list的用法:

InBlock.gif
<?php

InBlock.gif
$arr = array(

“张三”

,

“李四”

,

“王五”

);

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

InBlock.gif
print_r($a);

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


InBlock.gif
?>

list结合each使用:

InBlock.gif
<?php

InBlock.gif
$arr = array(

“张三”

=>20,

“李四”

=>29,

“王五”

=>23);

InBlock.gif

while

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

InBlock.gif
echo

“$key=>$value”

.'<br/>’;

InBlock.gif
?>


注意while

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

所以

InBlock.gif
<?php

InBlock.gif
$arr = array(

“张三”

,’b’=>

“李四”

,

“王五”

);

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

InBlock.gif
print_r($a);

//Array ( [1] => 王五 [0] => 张三 )


InBlock.gif
?>

6.多维数组

InBlock.gif
<?php

InBlock.gif
$a = array();

InBlock.gif
$a[‘山东’][0] =

“济南”

;

InBlock.gif
$a[‘山东’][1] =

“威海”

;

InBlock.gif
$a[‘黑龙江’][0] =

“哈尔滨”

;

InBlock.gif
$a[‘黑龙江’][1] =

“齐齐哈尔”

;

InBlock.gif


foreach

($a

as

$key1=>$v1) {

InBlock.gif
echo

“<b>$key1</b>”

.'<br/>’;

InBlock.gif

foreach

($v1

as

$v2) {

InBlock.gif
echo

“$v2 \n”

;

InBlock.gif
}

InBlock.gif
echo ‘<br/>’;

InBlock.gif
}

InBlock.gif
?>

7.数组函数

key取键值

InBlock.gif
<?php

InBlock.gif
$arr = array(

InBlock.gif
‘张三’ => ‘济南’,

InBlock.gif
‘李四’ => ‘烟台’,

InBlock.gif
‘王五’ => ‘威海’,

InBlock.gif
‘赵六’ => ‘北京’,

InBlock.gif
);

InBlock.gif


while

($person = current($arr)) {

InBlock.gif

if

($person == ‘威海’) {

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

InBlock.gif
}

InBlock.gif
next($arr);

InBlock.gif
}

InBlock.gif
?>

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

用for实现foreach效果:

InBlock.gif
<?php

InBlock.gif
$arr = array(

InBlock.gif
‘张三’ => ‘济南’,

InBlock.gif
‘李四’ => ‘烟台’,

InBlock.gif
‘王五’ => ‘威海’,

InBlock.gif
‘赵六’ => ‘北京’,

InBlock.gif
);

InBlock.gif


for

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

InBlock.gif
echo $key.'<br/>’;

InBlock.gif
?>

这个问题同上,如果某个键值计算为false也会跳出循环。


最后出个小题目:


自己动手写个函数实现关联数组的键值互换,即键变成值,而值作为键?

转载于:https://blog.51cto.com/xcf007/102334


关闭菜单