array_walk

来源:互联网 发布:server name 多个域名 编辑:程序博客网 时间:2024/06/07 13:43

array_walk:我们可以使用自己定义的函数,对数组中每个元素进行回调处理

bool array_walk(array &$array, callable $funcname [,mixed $userdata=null])

参数说明:

array:输入的数组funcname: 一般funcname接收两个参数,第一个是数组值,第二个是键名userdata:可选参数,若填写,则作为funcname的第三个参数

注:如果需要改变array的值,需要将funcname第一个参数指定为引用;但是只能改变数组的值,不能改变数组的结构(如:新增/删除元素),因为会造成不可预期的问题

例1:遍历数组

<?phpfunction print_test($item, $key) {    echo "key: $key<br/>";    echo "value: ";    echo "<pre>";    var_dump($item);    echo "</pre>";}$arr = array(        'apple' => array(                'price' => 4099,                'version' => '6s'            ),        'xiaomi' => array(                'price' => 2009,                'version' => '5'            ));array_walk($arr, 'print_test');//将$arr的每个元素传入print_test函数输出

结果如下:

key: applevalue:array(2) {  ["price"]=>  int(4099)  ["version"]=>  string(2) "6s"}key: xiaomivalue:array(2) {  ["price"]=>  int(2009)  ["version"]=>  string(1) "5"}

例2:改变数组的值

<?phpfunction print_test($item, $key) {    echo "key: $key<br/>";    echo "value: ";    echo "<pre>";    var_dump($item);    echo "</pre>";}function change(&$item, $key) {    $item['date'] = '2016';}$arr = array(        'apple' => array(                'price' => 4099,                'version' => '6s'            ),        'xiaomi' => array(                'price' => 2009,                'version' => '5'            ));array_walk($arr, 'change');#将$arr传入change,对值进行修改array_walk($arr, 'print_test');

结果如下:

key: applevalue:array(3) {  ["price"]=>  int(4099)  ["version"]=>  string(2) "6s"  ["date"]=>  string(4) "2016"}key: xiaomivalue:array(3) {  ["price"]=>  int(2009)  ["version"]=>  string(1) "5"  ["date"]=>  string(4) "2016"}
0 0
原创粉丝点击