热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

php核心技术-数组操作符及数组相关函数

Array_merge()当出现下标相同的元素时:如果是索引下标相同,则会将后边的数组($arr2)元素的下标按照$arr1的下标做递增,实现合并。如果是关联下标相同,则后边的元素将覆盖前边的元素的值
数组操作符:
+:数组的合并运算
$arr1 + $arr2 但是注意:如果出现 $arr1 与 $arr2中元素下标相同的元素,则保留$arr1元素的值。
对应比较 Array_merge(); 用于合并数组的函数。
Array_merge($arr1, $arr2);

Array_merge()当出现下标相同的元素时:如果是索引下标相同,则会将后边的数组($arr2)元素的下标按照$arr1的下标做递增,实现合并。如果是关联下标相同,则后边的元素将覆盖前边的元素的值。


$arr1 = array('a', 'b', 'c', 'd');  
$arr2 = array('i', 'ii', 'iii', 'iv');  
$arr3 = array('a' => 1, 'b' => 2, 'c'=> 3, 'd'=>4);  
$arr4 = array('a' => 'one', 'b' => 'two', 'c' => 'three');  
var_dump($arr1 + $arr2);  
echo '
'; var_dump($arr1 + $arr3); echo '
'; var_dump(array_merge($arr1, $arr2)); echo '
'; var_dump(array_merge($arr1, $arr3)); echo '
'; var_dump(array_merge($arr3, $arr4));


==等于

当数组中存在相同的键值对时 就认为是相等的。元素个数相同,并且每个元素的下标与值相同。


$arr5 = array('a' => 1, 'b' => 2);  
$arr6 = array(1, 2);//0=>1 1=>2  
$arr7 = array('b' => 2, 'a' => 1);  
var_dump($arr5 == $arr6);//false  
var_dump($arr6 == $arr7);//false  
  
var_dump($arr5 == $arr7);//true  
var_dump($arr5 === $arr7);//false  


===全等, 在相等的基础上,同时要求元素的顺序也相同。


var_dump($arr5 == $arr7);//true  ==  
var_dump($arr5 === $arr7);//false  ===  


数组的相关处理函数:
Range();创建一个包含指定范围元素的数组。
例如:需要创建一个包含所有小写字母的数组。
range

创建一个数组,需要包含,所有的字母和数字(不要0)。


//制作所有可能的字符的集合  
$chars = array_merge(range('a', 'z'), range('A', 'Z'), range(1, 9));  


Array_rand();从数组中随机的取得一个或多个单元。取得的是随机的下标,不是随机的元素值。如果需要取得随机的元素值,需要利用随机的下标,再获取相对的值。


Array_rand($arr, $n);
//随机的取得4个元素下标  
$rand_keys = array_rand($chars, 4); 


取得 $chars数组中 随机的4个元素值:


//打乱顺序  
shuffle($rand_keys);//打乱  
//遍历所有的下标,然后取得对应的字符  
foreach($rand_keys as $key) {  
//    echo $key, ' ';  
    echo $chars[$key], ' ';  
}  


arrage

Shuffle() 将数组元素的顺序打乱:


//打乱顺序  
shuffle($rand_keys);//打乱  


验证码的字符:


//制作所有可能的字符的集合  
$chars = array_merge(range('a', 'z'), range('A', 'Z'), range(1, 9));  
//随机的取得4个元素下标  
$rand_keys = array_rand($chars, 4);  
//打乱顺序  
shuffle($rand_keys);//打乱  
//遍历所有的下标,然后取得对应的字符  
foreach($rand_keys as $key) {  
//    echo $key, ' ';  
    echo $chars[$key], ' ';  
}  


有关数组函数的详细内容 大家请参考:
数组键值操作函数:
Array_values();取得数组内的所有的值
Array_keys();取得数组的所有的键
phpstar

Array_combine($arr1, $arr2) 合并生成数组,但是是使用第一个数组元素的值作为新数组的下标,而使用第二个数组元素的值作为新数组的元素的值。


$arr2 = array('a', 'b', 'c');  
$arr3 = array('i', 'ii', 'iii');  
var_dump(array_combine($arr2, $arr3));  
//array(3) { ["a"]=> string(1) "i" ["b"]=> string(2) "ii" ["c"]=> string(3) "iii" }  
echo '
';


注意与array_merge的区别。
Array_flip()交换数组元素的下标与值:
$arr1 = array('a' => 1, 'b' => 2, 3, 4);  
var_dump(array_flip($arr1));  
//array(4) { [1]=> string(1) "a" [2]=> string(1) "b" [3]=> int(0) [4]=> int(1) }  
echo '
';


Array_key_exists();检查 下标是否存在

In_array();检查 值是否存在


$arr1 = array('a' => 1, 'b' => 2, 3, 4);
var_dump(array_key_exists('a', $arr1));//true  
echo '
';  
var_dump(in_array('a', $arr1));//false  
echo '
';  


数组的合并与拆分:
Array_chunk(需要拆分的数组,拆分的大小);
 
$arr1 =array('a', 'b', 'c', 'd', 'e');  
var_dump(array_chunk($arr1, 2));  
//array(3) { [0]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b" }  
[1]=> array(2) { [0]=> string(1) "c" [1]=> string(1) "d" }  
[2]=> array(1) { [0]=> string(1) "e" } }  
Array_merge($arr, $arr2, $arr3);同时合并多个数组,注意下标相同的情况即可。
merage

 Extract(); 将数组元素注册到当前的变量列表中,以元素的下标作为变量名,以元素值作为变量的值。返回值为 注册到变量列表中的变量的数量,因为并不是所有的元素都可以被注册成变量的,取决于元素的下标是否是一个合法的变量名规则。


$arr2 = array('a' => 'i', 3=>'ii', 'c'=>'iii');  
var_dump($a);//输出变量a的值 NULL  
var_dump(extract($arr2));  
var_dump($a, $c);  
//string(1) "i" string(2) "ii" string(3) "iii"  


Compact(); 与extract相对,会使用一堆变量,生成一个数组。
phpstar

Explode(), 将一个字符串分割成数组。


$str1 = __DIR__;  
var_dump($str1);  
echo '
';  
var_dump(explode('\\', $str1));  
//array(5) { [0]=> string(2) "E:" [1]=> string(3) "amp"  
[2]=> string(6) "apache" [3]=> string(6) "htdocs" [4]=> string(4) "test" }  
//一个老师教多门课  
$teacher = array(  
'name'=>'xiaowang',  
'subjects' => '数学-语文-物理'  
);  
var_dump(explode('-', $teacher['subjects']));  
//array(3) { [0]=> string(6) "数学" [1]=> string(6) "语文" [2]=> string(6) "物理" }  


Implode(), 将一个数组元素链接成一个字符串。


$subjects = array('数学', '物理', '化学', '体育');  
var_dump(implode('-', $subjects));  
//string(27) "数学-物理-化学-体育




交集  并集  差集 

 
交集

array_diff 差集:


$arr1 = array('a', 'b', 'c', 'd');  
$arr2 = array('b', 'd', 'e', 'f');  
var_dump(array_diff($arr1, $arr2));  
//array(2) { [0]=> string(1) "a" [2]=> string(1) "c" }  
echo '
';  


Array_intersect()交集:


$arr1 = array('a', 'b', 'c', 'd');  
$arr2 = array('b', 'd', 'e', 'f');  
var_dump(array_intersect($arr1, $arr2));  
//array(2) { [1]=> string(1) "b" [3]=> string(1) "d" }  


模拟数据结构 栈和队列的操作:
栈:后进先出。Array_push array_pop

Array_push() 入栈 返回值 为入栈后数组的元素个数


$arr = array('a', 'b', 'c');  
//入栈  
var_dump(array_push($arr, 'd'));  
//int(4)  
var_dump($arr);  
//array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c"  
[3]=> string(1) "d" } 


Array_pop(); 出栈 返回值为弹出的元素的值。


//出栈  
var_dump(array_pop($arr));  
//string(1) "c"  
var_dump($arr);  
//array(2) { [0]=> string(1) "a" [1]=> string(1) "b" }
  


队列:先进先出 array_push   array_shift


$arr = array();  
array_push($arr, 'a', 'b', 'c');  
var_dump($arr);  
echo '
';  
var_dump(array_shift($arr));  
//string(1) "a"  
var_dump($arr);  
//array(2) { [0]=> string(1) "b" [1]=> string(1) "c" }  


同时提供一个 可以在数组头部放入数据的操作:
Array_unshift();
排序相关的函数:

Sort() 按照数组元素的值对数组进行排序:


$arr = array(10, 20, 6, 8, 11);  
sort($arr);  
var_dump($arr); 


K表示按照下标排序,r表示倒序,a表示保持下标
自然排序: 注意 img2 与 img11的区别

Natsort


$arr2 = array('img1.jpg', 'img2.jpg', 'img11.jpg');  
sort($arr2);  
var_dump($arr2);  
//array(3) { [0]=> string(8) "img1.jpg" [1]=> string(9) "img11.jpg" 
 [2]=> string(8) "img2.jpg" }  

$arr2 = array('img1.jpg', 'img2.jpg', 'img11.jpg');  
natsort($arr2);  
var_dump($arr2);  
//array(3) { [0]=> string(8) "img1.jpg" [1]=> string(8) "img2.jpg"  
[2]=> string(9) "img11.jpg" }  


Count();统计数组的元素个数。
count
Count配合for 完成遍历索引数组:
 
count
支持递归的统计元素的个数:
函数递归
注意:当使用count去统计非数组类型的数据时 返回的结果为1
phpstar
Array_search($ele, $arr) 在数组内查找元素,找到返回下标,否则返回false
phpstar
如何利用array_search判断数组内是否有某个元素:
php技术
Array_sum()计算数组中元素的和:
php技术

推荐阅读
author-avatar
silaker
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有