php学习第三章:数组处理函数(二)

六、数据的查找、替换

1、in_array($value,$array);判断$value是否存在于$array这个数组中,如果存在返回true,如果不存在返回false

2、array_search($value,$array);意义与in_array一样,只是当存在时返回该值对应的键值

3、array_replace($array1,$array2);对数组$array2替换$array1对应的值

 1  $ar1 = array('151','158','159','134','135','136','137','138','139');
 2     $phone = '18956895623';
 3     $number = substr($phone,0,3);
 4     if(!in_array($number, $ar1))
 5     {
 6         echo '非移动手机号!';
 7     }
 8     //输出:非移动手机号
 9    
10     var_dump(array_search($number,$ar1));   //输出false
11     $phone1 = '13856897856';
12     $num = substr($phone1,0,3);
13     var_dump(array_search($num,$ar1));      //输出:7
14     
15     $ar2 = array('永远','当下','今天');
16     $ar3 = array('昨天','明天');
17     var_dump(array_replace($ar2, $ar3));
18     /**
19              输出:array
20           0 => string '昨天' (length=6)
21           1 => string '明天' (length=6)
22           2 => string '今天' (length=6)
23      */

4、array_unique($array)去掉数组的重复的值

七、数组的填充、合并与拆分

1、array_fill($start,$length,$value);  //用$value填充一个数组,填充的位置从$start开始,填充$length个长度

 1 /**
 2      * array_fill($startIndex, $length, $value) 用指定的值填充数组
 3      * @param int $startIndex 填充的起始位置的索引值
 4      * @param int $length 填充的长度
 5      * @param mixed $value 用来填充的值
 6      * @return array
 7      */
 8     var_dump(array_fill(2,5,'钓鱼岛是中国的!'));
 9     /**
10      输出:
11      array
12           2 => string '钓鱼岛是中国的!' (length=22)
13           3 => string '钓鱼岛是中国的!' (length=22)
14           4 => string '钓鱼岛是中国的!' (length=22)
15           5 => string '钓鱼岛是中国的!' (length=22)
16           6 => string '钓鱼岛是中国的!' (length=22)
17      */
18     

2、array_fill_keys(array $keys,$value);   //用指定的键与值来填充数组

 1 /**
 2      * array_fill_keys(array $keys,$values) 用指定的键和值来填充一个数组
 3      * @param array $keys 用来填充的数组的键名
 4      * @param mixed $values 用来填充的值
 5      * @return array
 6      */
 7     var_dump(array_fill_keys(array('奥巴巴','卡梅伦','普京','奥朗德','中国人'),'钓鱼岛自古以来都是中国的领土,你丫的都闭嘴!!!!'));
 8     /**
 9      array
10       '奥巴巴' => string '钓鱼岛自古以来都是中国的领土,你丫的都闭嘴!!!!' (length=75)
11       '卡梅伦' => string '钓鱼岛自古以来都是中国的领土,你丫的都闭嘴!!!!' (length=75)
12       '普京' => string '钓鱼岛自古以来都是中国的领土,你丫的都闭嘴!!!!' (length=75)
13       '奥朗德' => string '钓鱼岛自古以来都是中国的领土,你丫的都闭嘴!!!!' (length=75)
14       '中国人' => string '钓鱼岛自古以来都是中国的领土,你丫的都闭嘴!!!!' (length=75)
15      */

3、array_pad($array,$padSize,$padValue); //用指定的值来填充一个数组,填充到指定长度

 1 /**
 2      * array_pad($array,$padSize,$padValue)  把一个数组用指定值填充到指定长度
 3      * @param array $array 被操作的数组
 4      * @param int $padSize 填充之后的长度
 5      * @param string $padValue 用来填补的内容
 6      */
 7     var_dump(array_pad(array('三国演义','水浒传'),5,'中国经典'));
 8     
 9     /**
10      输出:
11      array
12           0 => string '三国演义' (length=12)
13           1 => string '水浒传' (length=9)
14           2 => string '中国经典' (length=12)
15           3 => string '中国经典' (length=12)
16           4 => string '中国经典' (length=12)
17      */

4、array_combine(array $keys,array $values);将一个数组作为键,一个数组作为值合并成一个新的数组

 1 /**
 2      * array_combine(array $keys, array $values);
 3      * 将一组数组作为键名,另一组数组作为键值,合并为一个新的数组
 4      * @param array $keys 作为键名的数组
 5      * @param array $values 作为键值的数组
 6      * @return array
 7      */
 8     $keys = array('name','sex','url');
 9     $values = array('许三多','男','http://xusanduo.test.com');
10     var_dump(array_combine($keys, $values)); //输出:array 'name' => string '许三多' (length=9) 'sex' => string '男' (length=3) 'url' => string 'http://xusanduo.test.com' (length=24)
11     

5、array_merge($array1,$array2,……); 把多个数组合并为一个数组

 1 /**
 2      * array_merge($array1, $array2,$array3) 将两个或多个数组合并为一个数组
 3      * @param array $array1
 4      * @param array $array2
 5      * @return array
 6      */
 7     $arrayA = array('username'=>'秦琼', 'nickname'=>'神拳太保小孟尝','hometown'=>'山东历城');
 8     $arrayB = array('Knighthood'=>'护国公','honor'=>'凌烟阁二十四功臣之一');
 9     var_dump(array_merge($arrayA, $arrayB));
10     /*输出:
11      array
12     'username' => string '秦琼' (length=6)
13     'nickname' => string '神拳太保小孟尝' (length=21)
14     'hometown' => string '山东历城' (length=12)
15     'Knighthood' => string '护国公' (length=9)
16     'honor' => string '凌烟阁二十四功臣之一' (length=30)
17     */

6、array_slice($array,$start,$length); 将一个数组从某个位置开始截取$length个长度形成一个新的数组

 1 /**
 2      * array_slice($array,$start,$length);
 3      * @param array $array 要操作的数组
 4      * @param int $start 开始位置
 5      * @param int $length 要截取的长度
 6      * @return array
 7      */
    $arr = array('魏征','秦琼','程咬金','单雄信','王伯当','徐茂功','侯君集','罗成');
8 var_dump(array_slice($arr,0)); //输出:数组全部内容 9 var_dump(array_slice($arr,0,3)); //输出:array 0 => string '魏征' (length=6) 1 => string '秦琼' (length=6)2 => string '程咬金' (length=9) 10

7、array_splice($array,$start,$length,$replace);将一个数组从某个位置开始截取$length个长度,并将截取的部分用数组$replace进行替换

1 
$arr = array('魏征','秦琼','程咬金','单雄信','王伯当','徐茂功','侯君集','罗成');
var_dump(array_splice($arr,3,5,array('史大奈','金甲','童环','尉迟南','尉迟北'))); 2 var_dump($arr);

8、array_chunk($array,$length,$bool); //将数组按照特定的长度分割形成一个多维数组

 1 /**
 2      * array_chunk($array,int $length)
 3      * @param array $array 要操作的数组
 4      * @param int $length 分隔的长度
 5      * @param array
 6      */
 7     $arr = array('魏征','秦琼','程咬金','单雄信','王伯当','徐茂功','侯君集','罗成');
 8     var_dump(array_chunk($arr, 2, true));
 9     /* 输出:
10      array
11     0 =>
12     array
13     0 => string '魏征' (length=6)
14     1 => string '秦琼' (length=6)
15     1 =>
16     array
17     2 => string '程咬金' (length=9)
18     3 => string '单雄信' (length=9)
19     2 =>
20     array
21     4 => string '王伯当' (length=9)
22     5 => string '徐茂功' (length=9)
23     3 =>
24     array
25     6 => string '侯君集' (length=9)
26     7 => string '罗成' (length=6)
27     */

八、使用回调函数处理数组

1、array_map($callback,$array); 通过回调函数作用于数组的每个元素上,形成新的数据

 1 /**
 2      * array_map($callback, $array1, $array2) 对数组的每个元素进行操作,返回一个操作后的新数组
 3      * @param string $callback 回调函数名称
 4      */
 5     
 6     function md5Pwd($val)
 7     {
 8        return md5($val);
 9     }
10     
11     $password = array('abcdefg','123456','admin@admin.com');
12     var_dump(array_map('md5Pwd',$password));
13     /**
14      输出:array
15           0 => string '7ac66c0f148de9519b8bd264312c4d64' (length=32)
16           1 => string 'e10adc3949ba59abbe56e057f20f883e' (length=32)
17           2 => string '64e1b8d34f425d19e1ee2ea7236d3028' (length=32)
18      */
19     
20     

2、array_filter($array,$callback);     //通过回调函数对数组各个元素进行过滤

 1 /**
 2      * array_filter($array, $callback); 对数组的各单元进行过滤处理
 3      * @param array $array
 4      * @param string $callback 回调函数名称
 5      */
 6     
 7     
 8     function filterBadWords($var)
 9     {
10         $badWords = array('狗屎','杀人','卖血');
11         if(!in_array($var, $badWords))
12         {
13             return $var;
14         }
15     }
16     var_dump(array_filter(array('狗屎','你好','永远'),'filterBadWords')); //输出:array 1 => string '你好' (length=6) 2 => string '永远' (length=6)

九、数组排序

1、sort($array); 对数组进行排序,值从小到大排列

2、rsort($array);对数组进行排序,值从大到小排列

3、ksort($array);根据键的大小来对数组进行排序,键从小到大

4、krsort($array);根据键的大小对数组进行逆向排序,键从大到小

5、asort($array);对数组进行排序并保持原来的索引关系

6、arsort($array);对数组进行逆向排序并保持原来的索引关系

7、usort($array,$callback);通过回调函数对数组进行排序

8、uksort($array,$callback);通过回调函数判断键值对数组进行排序

9、array_multisort($callback,$array1,$array2,……);对数组进行排序

1 /**
2      * array_multisort($array, $array2) 对多个数组进行排序或对某个数组的某个维进行排序
3      */
4     $a1 = array('d','b','e','c');             
5     $a2 = array('hi','am','i','ab');
6     var_dump(array_multisort($a1, $a2));
7     var_dump($a1);   //输出:array 0 => string 'b' (length=1) 1 => string 'c' (length=1) 2 => string 'd' (length=1) 3 => string 'e' (length=1)
8     var_dump($a2);   //输出:array 0 => string 'am' (length=2) 1 => string 'ab' (length=2) 2 => string 'hi' (length=2) 3 => string 'i' (length=1)

十、其他函数

1、array_reverse($array);  //将数组的值倒转

2、shuffle($array); //打乱数组

3、array_rand($array,$num);从数组中随机取出$num个值

转载于:https://www.cnblogs.com/withec/archive/2012/12/03/2800003.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值