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

foreach的使用:
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/>';
?>

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

但是可以改成引用方式,通过&符号:
<?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也会跳出循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值