<li id="2aw4k"></li>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
    <center id="2aw4k"><small id="2aw4k"></small></center><center id="2aw4k"><small id="2aw4k"></small></center>
    首页»PHP»遍历PHP数组的6种方式

    遍历PHP数组的6种方式

    来源:原罪 发布时间:2018-06-16 阅读次数:

    在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容。那?#27425;?#39064;来了,你一般怎么遍历并处理数组。

    1、foreach

    很熟悉吧,是不是你的最爱?

    $arr = ['a', 'b', 'c'];
    
    foreach ($arr as $key => $value) {
        $arr[$key] = $value . '_i';
    }
    
    print_r($arr); // ['a_i', 'b_i', 'c_i'];

    2、array_map

    使用匿名函数的方式,处理数组里的每个元素。遍历完成后返回一个新的数组

    $arr = ['a', 'b', 'c'];
    
    $arr = array_map(function ($item) {
        return $item . '_i';
    }, $arr);
    
    print_r($arr); // ['a_i', 'b_i', 'c_i'];

    你可以同时处理多个数组

    $arr_1 = ['a', 'b', 'c'];
    $arr_2 = ['你', '好', '吗', '原', '罪'];
    // $arr_n = [...];
    
    $arr = array_map(function ($item_1, $item_2) {
        return $item_1 . '_' . $item_2 . '_i';
    }, $arr_1, $arr_2);
    
    print_r($arr); // ['a_你_i', 'b_好_i', 'c_吗_i', '_原_i', '_罪_i']

    是的,遍历的次数以最长的数组为准。
    遍历3次之后,$arr_1 其实是完成了的,所以之后 $item_1 的值都是null

    3、array_walk

    以引?#20040;?#36882;的形式遍历你的数组,没有返回值,而且只能处理一个数组。

    $arr = ['a', 'b', 'c'];
    
    array_walk($arr, function (&$item) {
        $item = $item . '_i';
    });
    
    print_r($arr); // ['a_i', 'b_i', 'c_i'];
    

    注意到 &$item 了吗,是的,多了个&,代表着你的形参是以引?#20040;?#36882;接收数据的。你要做的就是想办法改变这个参数。


    假如你处理的?#23884;?#32500;数组,处理方式也是万变不离其宗的。

    $arr = [
        ['name' => 'a'],
        ['name' => 'b'],
        ['name' => 'c']
    ];
    
    array_walk($arr, function (&$item) {
        $item['name'] = $item['name'] . '_i';
    });
    
    print_r($arr); // [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];

    4、for

    这应该是超级通用的语法了

    $arr = ['a', 'b', 'c'];
    
    for ($i = 0; $i < count($arr); ++$i) {
        $arr[$i] = $arr[$i] . '_i';
    }
    
    print_r($arr); // ['a_i', 'b_i', 'c_i'];

    不推荐使用。它的效?#26102;?#19981;上foreach。而且写法上比foreach略繁琐。

    5、each

    哈哈,这个函数在PHP7.2已经被废弃了@deprecated,而且感觉特别古老的书写方式。这种写法的执行效率也不行,新手应该直接放弃。

    $arr = ['a', 'b', 'c'];
    
    while (list($key, $value) = each($arr)) {
        $arr[$key] = $value . '_i';
    }
    
    print_r($arr); // ['a_i', 'b_i', 'c_i'];

    6、reset

    准确的讲并不止reset一个函数,需要组合多个内置函数,平常写代码基本是用不上的

    $arr = ['a', 'b', 'c'];
    // reset() 指针切换到头部,其?#30340;?#35748;就是指向开头,可以忽略这句
    reset($arr);
    
    // current() 获取当前指针的元素值
    while ($value = current($arr)) {
        // key() 获取当前指针的元素下标
        $arr[key($arr)] = $value . '_i';
        // next() 指针移到下一个
        next($arr);
    }
    
    print_r($arr); // ['a_i', 'b_i', 'c_i'];

    还有什么遍历方式,欢迎补充。觉得?#38405;?#26377;用就点个赞吧

    QQ群:WEB开发者官方群(515171538),验证消息:10000
    微信群:?#26377;?#32534;微信 849023636 邀请您加入,验证消息:10000
    提示:更多精彩内容关注微信公众号:全栈开发者中?#27169;╢sder-com)
    PHP
    网友评论(共0条评论) 正在载入评论......
    理智评论文明上网,拒绝恶意谩骂 发表评论 / 共0条评论
    登录会员中心
    大乐透彩票预测
    <li id="2aw4k"></li>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
    <center id="2aw4k"><small id="2aw4k"></small></center><center id="2aw4k"><small id="2aw4k"></small></center>
    <li id="2aw4k"></li>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
    <center id="2aw4k"><small id="2aw4k"></small></center><center id="2aw4k"><small id="2aw4k"></small></center>
    甘肃快3走势图2000期 江西快3今天开奖结果 2元彩票网首页 888棋牌 天津快乐十分玩法 155期二肖中特 北京pk10什么时候停售 吉林快3精准计划 陕西快乐10分规则 彩票漏洞 开心三张牌透视 2019广东快乐十分20分钟开奖 体彩黑龙江6+1 极速快乐十分是哪里的 pc蛋蛋网站任何玩