分享编程~
 

PHP多维数组元素值处理获得数组array_walk_recursive不用遍历

PHP多维数组每个元素值一一处理不用遍历,获得处理后的数组方式,处理自行编写递归和引用方法外,array_walk_recursive函数轻松搞定。

天天特卖抢好货

PHP中针对多维数组里边的元素需要一 一处理,然后获得处理后的数组,一般会用遍历方式,如果数组层次太深减少代码量和重用性会用递归或者引用的方式,PHP多维数组元素值处理array_walk_recursive轻松搞定,不用遍历(此函数原理也是遍历递归)。

先定义一个数组:

$item1 = array('php','html','javascript');
$class = array(array('code'=>'1','name'=>'软件开发','item'=>$item1),);

//打印数组:
print_r($class);

打印的数组结构:

Array
(
    [0] => Array
        (
            [code] => 1
            [name] => 软件开发
            [item] => Array
                (
                    [0] => php
                    [1] => html
                    [2] => javascript
                )
        )
)

现在要把数组里边的每个元素值拼接上个*号(这里做个示例)。

方法一、用递归自写个方法:

function varArr($var){
    $param = array();
    if(is_array($var)){
        foreach($var as $k=>$v){
            $param[$k] = varArr($v);
        }
    }else{
        return $var.'*';
    }
    return $param;
}

// 调用varArr方法
$result = varArr($class);  // 调用自定义的方法
print_r($result); // 打印结果

打印出的结果:

Array
(
    [0] => Array
        (
            [code] => 1*
            [name] => 软件开发*
            [item] => Array
                (
                    [0] => php*
                    [1] => html*
                    [2] => javascript*
                )
        )
)

方法二、PHP自带的函数array_walk_recursive();

//自定义方法:
function unitStr(&$v,$k,$str){
    $v .=$str;
}

// 把$class数组里每个元素应用到自定义方法unitStr
array_walk_recursive($class,'unitStr','*');

// 打印结果
print_r($class);

打印结果展示:

Array
(
    [0] => Array
        (
            [code] => 1*
            [name] => 软件开发*
            [item] => Array
                (
                    [0] => php*
                    [1] => html*
                    [2] => javascript*
                )
        )
)

函数使用理解:

语法:array_walk_recursive(array, callback,params);

参数:

    array:数组

    callback:自定义方法

    params:传参,定义作为第三个参数,用数组方式可以传多个参数,如:array('*','+')。

另外还一个函数array_walk(),用法和 array_walk_recursive() 一样,区别是:array_walk() 适用一维数组,不可以递归遍历,array_walk_recursive() 多维数组,可以递归遍历。


上一篇:纯js滑动块验证码防刷机防灌水div拖拽移动下一篇:免费web端天气预报插件接口代码调用天气网
赞(1) 踩(0)
您说多少就多少,您的支持是我最大的动力
赏金
微 信
赏金
支付宝