LAMP之路

不积跬步,无以至千里!

[PHP函数]PHP数组函数(单个数组的操作)

2012-10-18 一抹阳光 PHP

<pre>
<?php
/*PHP数组函数(单个数组的操作)
*2009.12.07
*/
//1.array_unique()//去除数组的值重复项,
//先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。
//当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同。就是说,当字符串的表达一样时。
echo ‘<b>1.array_unique()</b><br />’;
$input = array(“a” => “green”, “red”, “b” => “green”, “blue”, “red”);
$result = array_unique($input);
print_r($result);
echo ‘<br />————————————-<br />’;

//2.array_values()
//返回数组中所有的值并给其建立数字索引
echo ‘<b>2.array_values()</b><br />’;
$array = array(“size” => “XL”, “color” => “gold”,”4″=>”haha”);
print_r(array_values($array));
echo ‘<br />————————————-<br />’;

//3.array_keys()
echo ‘<b>3.array_keys()</b><br />’;
//返回数组中的数字或者字符串的键名
$array = array(0 => 100, “color” => “red”, “Color” => “red”);
print_r(array_keys($array));
//如果指定了某一元素的值,则只返回该值的键名。(全等比较(===)。 )
$array = array(“blue”, “red”, “green”, “blue”, “blue”);
print_r(array_keys($array, “blue”));
//也可返回子数组的键名
$array = array(“color” => array(“blue”, “red”, “green”),”size”  => array(“small”, “medium”, “large”));
print_r(array_keys($array));
echo ‘<br />————————————-<br />’;

//4.array_key_exists()
//在给定的 key 存在于数组中时返回 TRUE。key 可以是任何能作为数组索引的值。array_key_exists() 也可用于对象。
echo ‘<b>4.array_key_exists()</b><br />’;
$search_array = array(‘first’ => 1, ‘second’ => 4);
if (array_key_exists(‘first’, $search_array)) {
echo “The ‘first’ element is in the array”;
}
echo ‘<br />————————————-<br />’;

//5.array_change_key_case()
//将数组中的所有键名改为全小写或大写
//如果一个数组中的多个键名经过本函数后变成一样的话(例如 “keY” 和 “kEY”),最后一个值将覆盖其它的值。
echo ‘<b>5.array_change_key_case()</b><br />’;
$input_array = array(“FirSt” => 1, “SecOnd” => 4 ,”second” => 5);
//print_r($input_array);
print_r(array_change_key_case($input_array, CASE_UPPER));//大写
//print_r(array_change_key_case($input_array, CASE_LOWER));//小写
echo ‘<br />————————————-<br />’;

//6.array_chunk()
//将一个数组分割成多个数组,其中每个数组的单元数目由第二个参数决定。最后一个数组的单元数目可能会少几个。得到的数组是一个多维数组中的单元,其索引从零开始。
//可加第三个参数设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。默认值是 FALSE。
echo ‘<b>6.array_chunk()</b><br />’;
$input_array = array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’);
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
echo ‘<br />————————————-<br />’;

//7.array_combine()
//返回一个数组,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。如果两个数组的单元数不同或者数组为空时返回 FALSE
echo ‘<b>7.array_combine()</b><br />’;
$a = array(‘green’, ‘red’, ‘yellow’);
$b = array(‘avocado’, ‘apple’, ‘banana’);
$c = array_combine($a, $b);
print_r($c);
echo ‘<br />————————————-<br />’;

//8.array_count_values()
//返回一个数组,该数组用参数数组中的值作为键名,该值在参数数组中出现的次数作为值。(类似于 group by)
echo ‘<b>8.array_count_values()</b><br />’;
$array = array(1, “hello”, 1, “world”, “hello”);
print_r(array_count_values ($array));
echo ‘<br />————————————-<br />’;

//9.array_flip()
//交换数组中的键和值。如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。 如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转
echo ‘<b>9.array_flip()</b><br />’;
$trans = array(“a” => 1, “b” => 1, “c” => 2);
$trans = array_flip($trans);
print_r($trans);
echo ‘<br />————————————-<br />’;

//10.array_reverse()
//返回一个单元顺序相反的数组(不递归)。第二个参数为TRUE 则保留原来的键名,默认为FALSE。
echo ‘<b>10.array_reverse()</b><br />’;
$input  = array(“php”, 4.0, array(“green”, “red”));
$result = array_reverse($input);
print_r($result);
$result_keyed = array_reverse($input, TRUE);
print_r($result_keyed);
echo ‘<br />————————————-<br />’;

//11.array_search()
//在数组中搜索给定的值,如果成功则返回第一个匹配的键。要返回所有匹配值的键,应该用 array_keys() 加上可选参数 search_value 来代替
echo ‘<b>11.array_search()</b><br />’;
$array = array(0 => ‘blue’, 1 => ‘red’, 2 => ‘green’, 3 => ‘red’);
$key = array_search(‘green’, $array);
var_dump($key);
echo ‘<br />————————————-<br />’;

//12.array_shift() //出队
//将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。如果 array 为空(或者不是数组),则返回 NULL。
echo ‘<b>12.array_shift()</b><br />’;
$queue = array(“orange”, “banana”, “apple”, “raspberry”);
$fruit = array_shift($queue);
var_dump($fruit);
print_r($queue);
echo ‘<br />————————————-<br />’;

//13.array_unshift() //入队
//将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。
echo ‘<b>13.array_unshift()</b><br />’;
$queue = array(‘abs’=>”orange”, 3=>”banana”);
array_unshift($queue, “apple”, “raspberry”);
print_r($queue);
echo ‘<br />————————————-<br />’;

//14.array_pop() //出栈
//弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL。
echo ‘<b>14.array_pop()</b><br />’;
$stack = array(“orange”, “banana”, “apple”, “raspberry”);
$fruit = array_pop($stack);
var_dump($fruit);
print_r($stack);
echo ‘<br />————————————-<br />’;

//15.array_push() //入栈
//将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。
//如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
echo ‘<b>15.array_push()</b><br />’;
$stack = array(“orange”, “banana”);
array_push($stack, “apple”, “raspberry”);
print_r($stack);
echo ‘<br />————————————-<br />’;

//16.array_rand()
//从数组中随机返回一个或多个单元的键名
echo ‘<b>16.array_rand()</b><br />’;
srand((float) microtime() * 10000000);
$input = array(“Neo”, “Morpheus”, “Trinity”, “Cypher”, “Tank”);
$rand_keys = array_rand($input, 2);
var_dump($rand_keys);
print $input[$rand_keys[0]] . “\n”;
print $input[$rand_keys[1]] . “\n”;
echo ‘<br />————————————-<br />’;

//17.array_slice()
//返回根据 offset(第一个参数) 和 length(第二个参数) 所指定的 array 数组中的一段序列。
//如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始
//如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。
echo ‘<b>17.array_slice()</b><br />’;
$input = array(“a”, “b”, “c”, “d”, “e”);
$output = array_slice($input, 2);      // returns “c”, “d”, and “e”
$output = array_slice($input, -2, 1);  // returns “d”
$output = array_slice($input, 0, 3);   // returns “a”, “b”, and “c”
// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
echo ‘<br />————————————-<br />’;

//18.array_sum()、array_product()
//将数组中的所有值的和以整数或浮点数的结果返回、将数组中的所有值的积以整数或浮点数的结果返回
echo ‘<b>18.array_sum()、array_product()</b><br />’;
$a = array(2, 4, 6, 8);
echo “sum(a) = ” . array_sum($a) . “\n”;
echo “product(a) = ” . array_product($a) . “\n”;
$b = array(“a” => 1.2, “b” => 2.3, “c” => 3.4);
echo “sum(b) = ” . array_sum($b) . “\n”;
echo “product(b) = ” . array_product($b) . “\n”;
echo ‘<br />————————————-<br />’;

//19.array_fill()
//用 banana 将数组$a填充 6 个条目,键名从 5 开始。
echo ‘<b>19.array_fill()</b><br />’;
$a = array_fill(5, 6, ‘banana’);
print_r($a);
echo ‘<br />————————————-<br />’;

//20.array_pad()
//返回数组的一个拷贝,并用 第三个参数 将其填补到 第二个参数 指定的长度。如果 第二个参数 为正,则数组被填补到右侧,如果为负则从左侧开始填补。如果 第二个参数 的绝对值小于或等于 数组的长度则没有任何填补。有可能一次最多填补 1048576 个单元。
echo ‘<b>20.array_pad()</b><br />’;
$input = array(12, 10, 9);
$result = array_pad($input, 5, 0);
print_r($result);
$result = array_pad($input, -7, -1);
print_r($result);
$result = array_pad($input, 2, “noop”);
print_r($result);
echo ‘<br />————————————-<br />’;
?>