在php中,求关联数组的差集。
函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键。
因此,只在第一个数组中出现而不再其他输入数组中出现的键/值对才会返回到结果数组中。
其形式如下:
array array_diff_assoc(array array1,array array2[,arrayN…])
例子,只返回了[yellow] => Banana,因为这个特殊的键/值对出现在$fruit1中,而在$fruit2和$fruit3中都不存在。
<?php /** * 求关联数组的差集 * by www. */ $fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange"); $fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape"); $fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple"); $intersection = array_diff_assoc($fruit1, $fruit2, $fruit3); print_r($intersection); // output // Array ( [yellow] => Banana ) ?>
说明:
在php中遍历数组时,通常要遍历数组并获得各个键或值(或者同时获得键和值),PHP为此提供了一些函数来满足需求。
许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移向下一个适当的位置。
1,php数组的排序
例1,sort()、rsort()/asort()、arsort()对数组排序:/p>
<?PHP $array = array("b","c","d","a"); sort($array);//从低到高排序 print_r($array); echo "<br />"; rsort($array);//逆向排序 print_r($array); ?>
结果:
Array ( [0] => d [1] => c [2] => b [3] => a )
sort()、rsort()函数对数组进行从低到高的排序,返回结果为bool值;
asort()、arsort()函数是保留键值的排序,排序后键值不重新索引。
例2,将数组顺序打乱——shuffle()函数:
<?PHP $array = array("a","b","c","d"); shuffle($array);//从低到高排序 print_r($array); //by www. ?>
结果为动态结果:
shuffle的结果有点随机的意味,每次刷新都不一样。
例3,array_reverse()数组反向:
<?PHP $array = array("d","b","a","c"); $array = array_reverse($array);//从低到高排序 print_r($array); //by www. ?>
运行结果:
例4,自然排序算法——natsort()和natcasesort();
<?PHP $array = array("sort2","Sort5","sort1","sort4"); natsort($array);//从低到高排序 print_r($array); echo "<br />"; natcasesort($array); print_r($array); ?>
结果:
Array ( [2] => sort1 [0] => sort2 [3] => sort4 [1] => Sort5 )
natsort()、natcasesort()对数组进行自然排序,就是使用数字的正常排序算法。natcasesort会忽略大小写。
例5,对数组进行键值排序ksort():
<?PHP $array = array(1=>"sort2",4=>"Sort5",2=>"sort1",3=>"sort4"); ksort($array);//从低到高排序 print_r($array); ?>
结果:
注意:ksort()函数重新建立了索引。
以上通过五个例子,介绍了php数组的不同排序与实现方法,希望可以帮助到大家。
以下是php数组键值操作的一些例子,分享下。
例1,in_array()检测数组中是否有某个值存在:
<?php $array = range(0,9); if(in_array(9,$array)){ echo "数组中存在"; } //by www. ?>
运行结果:数组中存在
例2,key()取得数组当前的键名:
<?php $array = range(0,9); $num = rand(0,8); while($num--) next($array); $key = key($array); echo $key; //by www. ?>
此实例结果为动态结果,范围(0-8),不做结果演示。
例3,list()函数把数组中的值赋给指定变量:
<?PHP $staff = array( array("姓名","性别","年龄"), array("小张","男",24), array("小王","女",25), array("小李","男",23) ); echo "<table border=2>"; while(list($keys,$value) = each($staff)){ list($name,$sex,$age) = $value; echo "<tr><td>$name</td><td>$sex</td><td>$age</td></tr>"; } //by www. echo "</table>"; ?>
例4,array_flip()交换数组的键值和值:
1)、
<?PHP $array = array("red","blue","yellow","Black"); print_r($array); echo "<br />"; $array = array_flip($array); print_r($array); ?>
运行结果:
Array ( [0] => red [1] => blue [2] => yellow [3] => Black )
Array ( [red] => 0 [blue] => 1 [yellow] => 2 [Black] => 3 )
2)、
<?PHP $array = array("red","blue","yellow","Black"); $result = array_keys()($array); print_r($result); echo "<br />"; $result = array_values()($array); print_r($result); ?>
运行结果:
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 )
Array ( [0] => red [1] => blue [2] => yellow [3] => Black )
实例六:array_search()搜索数值:
3)、
<?PHP $array = array("red","blue","yellow","Black"); $result = array_search("red",$array); if(($result === NULL)){ echo "不存在数值red"; }else{ echo "存在数值 $result"; } ?>
结果:存在数值 0
函数array_search()返回的值可能为false或0或NULL,所以在判断时注意要用"==="