PHP之数组
作者:zccst5,array_merge与“+”的区别
array("a")+array("b")的结果是___
A.array("a","b")
B.array("b","a")
C.array("b")
D.array("a")
答案:D
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
Array
(
=> green
=> 2
=> 4
=> a
=> b
=> trapezoid
=> 4
)
对于“+”
$array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
$array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
$result = $array1 + $array2;
var_dump($result);
array(5) {
=>
string(6) "zero_a"
=>
string(5) "two_a"
=>
string(7) "three_a"
=>
string(5) "one_b"
=>
string(6) "four_b"
}
区别:
merge是以后者为准(覆盖前者相同key的值),而“+”是以前者为准。
4,
array_keys($arr[,search_value, strict])返回字符串键名(数字或字符串),组成新数组
一般用法:例子见手册
高级用法:
search_value可选。指定值的索引(键)。
strict可选。与 value 参数一起使用。可能的值:
true - 根据类型返回带有指定值的键名。
false - 默认值。不依赖类型。
3,array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] )
根据 offset 和 length 参数所指定的 array 数组中的一段序列。
注意 array_slice() 默认将重置数组的键。自 PHP 5.0.2 起,可以通过将 preserve_keys 设为 TRUE 来改变此行为。
$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));
输出结果:
Array
(
=> c
=> d
)
Array
(
=> c
=> d
)
2,判断是否为数组
bool is_array($arr)//如果 var 是 array,则返回 TRUE,否则返回 FALSE。类似的有is_float()、is_int()、is_integer()、is_string() 和 is_object()
//或
(array)$arr
1,array_fill()填充数组
<?php
$a = array_fill(5, 6, 'banana');
print_r($a);
?>
结果是:
Array
(
=> banana
=> banana
=> banana
=> banana
=> banana
=> banana
)
再比如,为数组赋初值$ret = array_fill(0,7,0);
这样数组$ret就有7个值,且均为0。
基础:
1,初始化
$arr = array();
2,增加
array_push()和array_unshift()
普通数组
array_push($fruitArray, "grape", "pineapple", "tomato");
关联数组
$fruitArray = array("a"=>"grape");
array_push($fruitArray, "c"=>"grape");
或$fruitArray['d'] = "tomato";
注:关联索引和pdo中的关联数组不一样。
区别是关联数组的key不能重复,但关联索引的key可重复(实际上必须重复)。
3,删除
array_shift()
array_pop()
unset($capitals['California']);普通数组、关联数组,二维数组的unset使用。
例如:
//unset使用实例,注unset不改变原来的index值
$data = array();
$i = 0;
foreach ($totalArr as $total){
foreach ($fails as $fail){
if($fail['name'] == $total['name']){
$percent = sprintf( "%1\$.2f", $fail['num'] * 100 / $total['total'] );
array_push($data,array('name'=>$total['name'],'total'=>$total['total'],'num'=>$fail['num'],'percent'=>$percent.'%'));
unset($totalArr[$i]);
}
}
$i++;
}
/********************* 剩下的 **********************/
foreach ($totalArr as $t){
array_push($data,array('name'=>$t['name'],'total'=>$t['total'],'num'=>0,'percent'=>'0.00%'));
}
print json_encode($data);
4,去掉重复值
array_unique()
例如:$a = array("a"=>"cat", "b"=>"cat"); print_r(array_unique($a));
结果是Array(=>cat)
5,差异化比较
array_udiff
6,排序
sort
ksort 按键名排序
互转函数
1,explode
把字符串转换成数组
例,
<?php
$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));
?>
输出:
Array
(
=> Hello
=> world.
=> It's
=> a
=> beautiful
=> day.
)
2,implode
把数组转换成字符串
implode(separator, array) 函数把数组元素组合为一个字符串
页:
[1]