<?php
/**
* 使用回调函数来处理数组
* array_filter($arr,function($value){}):将每个值取出传入回调函数,进行处理返回true的元素
* array_walk($arr,function(){$value,$key});将每个键值对传入到回调中进行处理,返回true的元素
* array_map(function(){},$arr1)对一个或多个数组进行回调处理
*
*
*/
header('content-type:text/hrml;charset=utf-8');
//$array = ['id'=>1111,'name'=>'jack','job'=>'student'];
//array_filter():过滤数组中的部分元素 通过引用传参修改
//$temp = [10,'',20,'','php'];
//
//将数组中的空字符串去掉 只显示10,20,PHP 有序排列
//print_r(array_values(array_filter($temp)));
//删除 数组$array中jack
//print_r(array_filter($array,function ($value){
// if ($value == 'jack'){
// return false;
// }
// return true;
//}));
//修改数组中jack的值
//$tb = ['id'=>1111,'name'=>'jack','job'=>'student'];
// print_r(array_filter($tb,function (&$value){
// if ($value == 'jack') {
// $value = '杰克';
// }
// return true;
// }));
//array_walk($arr,function($value,$key){}[,$param]);
//array_walk()本意是在数组中进行漫步,走一遍,对每个元素的兼职进行个性化的一些处理
//给数组$array数组中数组元素添加一个后缀 www.php.cn 用array_walk实现
//$suffix = 'www.php.cn';
//array_walk($array,function ($value,$key,$suffix){
// echo $key.'=>'.$value.'('.$suffix.')';
//},$suffix);
//
////array_walk()过滤数组中键名等于id的数据,将结果中的键值对用***进行连接
//$connector = '***';
//array_walk($array,function ($value,$key,$connector){
// if ($key !='id') {
// echo $key.$connector.$value;
// }
//},$connector);
//array_map(function($v1,$v2){},$arr1,$arr2...);
/*
* 1.本意是数组映射
* 2.回调参数是数量与数组的的数量一致
* 3.每个数组的元素必须一致,否则,短的数组自动填充空元素
* 4.如果回调函数是null,那么返回一个多维数组
* 5.处理的数组仅处置值,与键无关
* 6.返回值是处理过的索引数组
*/
//单数组:划分判断未成年与成年
//$age = [12,19,50,60];
//$res = array_map(function ($val){
// if ($val<18) {
// return '未成年';
// }
// return '成年';
//
//},$age);
//print_r($res);
//双数组:过滤
//$key = ['id','name','sex','age','address','job'];
//$value = ['100','jack','male','19','湖南','student'];
//
////过滤敏感数组 sex,age,
//$res1 = array_map(function ($key,$value){ //$key,$value是数组传过来的的值如id,name
// if (!in_array($key,['sex','age'])) {// 对数组$key传过来的值进行识别过滤
// return $value;
// }
//},$key,$value);
//print_r(array_filter($res1));//因为sex,age过滤了 出现了空元素 ,用array_fliter进行过滤掉
//array_map(null,arr1,arr2)
$name = ['id','name','lesson'];
$value = ['100','jack','php'];
$res2 = array_map(null,$name,$value);//生成多维数组
//print_r($res2);//可以看书是一个索引数组
foreach ($res2 as $value) { //遍历索引数组
list($key,$val) = $value;//用list函数处理
echo $key,'是',$val;
}