LAMP之路

不积跬步,无以至千里!

[PHP函数]PHP数组函数(两数组的操作)

2012-10-18 一抹阳光 PHP

<pre>
<?php
/*PHP数组函数(两数组的操作)
*2009.12.07
*/
//1.array_merge()//两数组合并,一个数组中的值附加在前一个数组的后面
echo ‘<b>1.array_merge()</b><br />’;
//如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
$array1 = array(“color” => “red”, 2, 4,”a”);
$array2 = array(“a”, “b”, “color” => “green”, “shape” => “trapezoid”, 4);
$result = array_merge($array1, $array2);
print_r($result);
//如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
$array1 = array();
$array2 = array(2 => “data”);
$result = array_merge($array1, $array2);
print_r($result);
//如果你想完全保留原有数组并只想新的数组附加到后面,用 + 运算符:
$array1 = array();
$array2 = array(1 => “data”);
$result = $array1 + $array2;
print_r($result);
echo ‘<br />————————————-<br />’;

//2.array_merge_recursive()
//如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。
echo ‘<b>2.array_merge_recursive()</b><br />’;
$ar1 = array(“color” => array(“favorite” => “red”), 5);
$ar2 = array(10, “color” => array(“favorite” => “green”, “blue”));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
echo ‘<br />————————————-<br />’;

//3.array_intersect()
//返回一个数组,该数组包含了所有在第一个参数数组中也同时出现在所有其它参数数组中的值。注意键名保留不变
//两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。
echo ‘<b>3.array_intersect()</b><br />’;
$array1 = array(“a” => “green”, “red”, “blue”);
$array2 = array(“b” => “green”, “yellow”, “red”);
$result = array_intersect($array1, $array2);
print_r($result);
echo ‘<br />————————————-<br />’;

//4.array_intersect_assoc()
//键名和值都要比较
echo ‘<b>4.array_intersect_assoc()</b><br />’;
$array1 = array(“a” => “green”, “b” => “yellow”, “c” => “blue”, “red”);
$array2 = array(“a” => “green”, “yellow”, “d” => “blue”,”red”);
$result = array_intersect_assoc($array1, $array2);
print_r($result);
echo ‘<br />————————————-<br />’;

//5.array_intersect_key()
//只比较键名
echo ‘<b>5.array_intersect_key()</b><br />’;
$array1 = array(‘blue’  => 1, ‘red’  => 2, ‘green’  => 3, ’0′ => 4);
$array2 = array(‘green’ => 5, ‘blue’ => 6, ‘yellow’ => 7, ’1′   => 8);
var_dump(array_intersect_key($array1, $array2));
echo ‘<br />————————————-<br />’;

//6.array_diff()
//返回一个数组,该数组包括了所有在第一个参数数组中但是不在任何其它参数数组中的值。注意键名保留不变。
//两个键名仅在 (string) $key1 === (string) $key2 时被认为相等
echo ‘<b>6.array_diff()</b><br />’;
$array1 = array(“a” => “green”, “red”, “blue”, “red”);
$array2 = array(“b” => “green”, “yellow”, “red”);
$result = array_diff($array1, $array2);
print_r($result);
echo ‘<br />————————————-<br />’;

//7.array_diff_assoc()
//键名和值都要比较
echo ‘<b>7.array_diff_assoc()</b><br />’;
$array1 = array (“a” => “green”, “b” => “brown”, “c” => “blue”, “red”);
$array2 = array (“a” => “green”, “yellow”, “red”);
$result = array_diff_assoc($array1, $array2);
print_r($result);
echo ‘<br />————————————-<br />’;

//8.array_diff_key()
//只比较键名
echo ‘<b>8.array_diff_key()</b><br />’;
$array1 = array(‘blue’  => 1, ‘red’  => 2, ‘green’  => 3, ‘purple’ => 4);
$array2 = array(‘green’ => 5, ‘blue’ => 6, ‘yellow’ => 7, ‘cyan’   => 8);
var_dump(array_diff_key($array1, $array2));
echo ‘<br />————————————-<br />’;
?>