设为首页 收藏本站
查看: 1269|回复: 0

[经验分享] PHP 操作数组的常用函数

[复制链接]

尚未签到

发表于 2018-12-16 07:07:09 | 显示全部楼层 |阅读模式
/*
* 数组的常用函数
* 1.数组的键/值操作函数
* array_values()— 返回数组中所有的值
* array_keys()返回数组中部分的或所有的键名
* in_array() 检查数组中是否存在某个值 如果找到 needle 则返回 TRUE,否则返回 FALSE。
* array_search — 在数组中搜索给定的值,如果成功则返回相应的键名
* array_key_exists — 检查给定的键名或索引是否存在于数组中
*  array_flip — 交换数组中的键和值
*  array_reverse — 返回一个单元顺序相反的数组
*2.数组中统计数组元素
*count — 计算数组中的单元数目或对象中的属性个数
*array_count_values — 统计数组中所有的值出现的次数  返回一个关联数组,用 input 数组中的值作为键名,该值在数组中出现的次数作为值。
*array_unique — 移除数组中重复的值 Returns the filtered array.
*3.使用回调函数处理数组的函数
*array_filter — 用回调函数过滤数组中的单元
*array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
*array_map — 将回调函数作用到给定数组的单元上  
*
*/
//array_values — 返回数组中所有的值
$arr = ['王小明','津沙港湾','小香港'];
$a=array_values($arr);
var_dump($a);
$lamp=array(
    'OS'=>'Linux',
    'WebServer'=>'Apache',
    'DB'=>'MySQL',
    'Language'=>'PHP',
    'lang'=>'PHP',
    'num1'=>10,
    'num2'=>'10',
//    'girl'=>null
);
var_dump(array_values($lamp));
list($OS,$WebServer,$DB,$Language) = array_values($lamp);
echo $OS;
$b=array_keys($lamp);//返回所有的键名
$c=array_keys($lamp,'Apache');//返回Apache键名
$d=array_keys($lamp,10,true);//返10 加true 表示10的值和类型都要相同。=== 必须是整型  
var_dump($b);
var_dump($d);
//in_array
if(in_array('MySQL',$lamp)){
    echo '在数组中';
}else{
    echo '不在数组中';
}
//array_search — 在数组中搜索给定的值,如果成功则返回相应的键名
var_dump(array_search('MySQL',$lamp));
//array_key_exists — 检查给定的键名或索引是否存在于数组中
if(array_key_exists('DB',$lamp)){
    echo '在数组中';
}else{
    echo '不在数组中';
}
//array_key_exists判断数组的值为null返回true
if(array_key_exists('girl',$lamp)){
    echo '在数组中';
}else{
    echo '不在数组中';
}
//isset() 判断数组的值为null返回false
if(isset($lamp['girl'],$lamp)){
    echo '在数组中';
}else{
    echo '不在数组中';
}
//array_flip — 交换数组中的键和值
var_dump(array_flip($lamp));
//array_reverse — 返回一个单元顺序相反的数组
var_dump(array_reverse($lamp));
//如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。
$arr1 = [
    1=>1,
    3=>3,
    5=>4   
];
var_dump(array_reverse($arr1,true));
============================================================================
//count — 计算数组中的单元数目或对象中的属性个数
$str='I am yangyihai';
var_dump(count($str));//int 1
$str1=[
  1=>[1,2,3],
  2=>[2,4,6]
];
echo count($str1);//2  默认统计外层数组
echo count($str1,1);//8  如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数  外层加内层
$str2 = [1,1,2,2,2,3,5,7];
//array_count_values — 统计数组中所有的值出现的次数  返回一个关联数组,用 input 数组中的值作为键名,该值在数组中出现的次数作为值。
var_dump(array_count_values($str2));
//array_unique — 移除数组中重复的值 Returns the filtered array.
var_dump(array_unique($str2));
//array_filter — 用回调函数过滤数组中的单元
$arr = [1,2,4,null,"",-5-4-2,-4,3,false,true,3,4,'a'];
var_dump($arr);
var_dump(array_filter($arr));
function calltest($a){
    if($a>=0){
        return true;
    }else{
        return false;
    }
}
function odd($var){
   return($var &1);//奇数 跟1取与操作
}
$arr1 = [1,2,3,4,5,6,7,8,9];
//var_dump(array_filter($arr,'calltest'));
var_dump(array_filter($arr1,'odd'));
var_dump(array_values(array_filter($arr1,function ($var){
    return(!($var & 1));//偶数
})));
//array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
function walkcall(&$var){
    echo $var=$var*$var.' ';
}
//典型情况下 funcname 接受两个参数。array 参数的值作为第一个,键名作为第二个。
function myfun($value,$key){
    echo "{$key}===>{$value}";
}
array_walk($arr1, 'walkcall');
array_walk($arr1, 'myfun');
//使用匿名函数
array_walk($arr1,function(&$value,$key){
    $value=$value+1;
});
array_walk($arr1,function(&$value,$key,$str){
    $value=$value+1;
    echo $key.$str.$value;
},'————');
//var_dump($arr1);
function cube($var){
    return $var*$var*$var;
}
$arr2 = [1,2,3,4,5,6,7,8,9];
var_dump(array_map('cube',$arr2));
$arr3 = [1,2,3,4];
$arr4 = ['one','two','three','four'];
function mapcall($a,$b){
    echo "$a-----$b";
}
$rarr=array_map('mapcall', $arr3,$arr4);
var_dump($rarr);
$rarr1=array_map(null, $arr3,$arr4);
var_dump($rarr1);  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-651819-1-1.html 上篇帖子: 对于新手学习PHP的规划建议 下篇帖子: 编译安装PHP 时遇到问题解决方法.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表