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. var_dump(array_search($number,$ar1)); //输出false
  10. $phone1 = '13856897856';
  11. $num = substr($phone1,0,3);
  12. var_dump(array_search($num,$ar1)); //输出:7
  13. $ar2 = array('永远','当下','今天');
  14. $ar3 = array('昨天','明天');
  15. var_dump(array_replace($ar2, $ar3));
  16. /**
  17. 输出:array
  18. 0 => string '昨天' (length=6)
  19. 1 => string '明天' (length=6)
  20. 2 => string '今天' (length=6)
  21. */
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. */
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. array
  11. 0 => string '三国演义' (length=12)
  12. 1 => string '水浒传' (length=9)
  13. 2 => string '中国经典' (length=12)
  14. 3 => string '中国经典' (length=12)
  15. 4 => string '中国经典' (length=12)
  16. */
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)
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. */
  8. $arr = array('魏征','秦琼','程咬金','单雄信','王伯当','徐茂功','侯君集','罗成');
  9. var_dump(array_slice($arr,0)); //输出:数组全部内容
  10. var_dump(array_slice($arr,0,3)); //输出:array 0 => string '魏征' (length=6) 1 => string '秦琼' (length=6)2 => string '程咬金' (length=9)
7、array_splice($array,$start,$length,$replace);

将一个数组从某个位置开始截取$length个长度,并将截取的部分用数组$replace进行替换

  1. $arr = array('魏征','秦琼','程咬金','单雄信','王伯当','徐茂功','侯君集','罗成');
  2. var_dump(array_splice($arr,3,5,array('史大奈','金甲','童环','尉迟南','尉迟北')));
  3. 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. function md5Pwd($val)
  6. {
  7. return md5($val);
  8. }
  9. $password = array('abcdefg','123456','admin@admin.com');
  10. var_dump(array_map('md5Pwd',$password));
  11. /**
  12. 输出:array
  13. 0 => string '7ac66c0f148de9519b8bd264312c4d64' (length=32)
  14. 1 => string 'e10adc3949ba59abbe56e057f20f883e' (length=32)
  15. 2 => string '64e1b8d34f425d19e1ee2ea7236d3028' (length=32)
  16. */
2、array_filter($array,$callback);

通过回调函数对数组各个元素进行过滤

  1. /**
  2. * array_filter($array, $callback); 对数组的各单元进行过滤处理
  3. * @param array $array
  4. * @param string $callback 回调函数名称
  5. */
  6. function filterBadWords($var)
  7. {
  8. $badWords = array('狗屎','杀人','卖血');
  9. if(!in_array($var, $badWords))
  10. {
  11. return $var;
  12. }
  13. }
  14. 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个值