PHP 数组

数组去重

$bb=array_unique($aa);

去重后键还是保留原来的,如果要重置键需要array_values处理

$arr=array_values($arr);

这样就会重新排列键


in_array($str,$arr);

判断$str是否在数组$arr中,返回值为TRUE或者FALSE


往数组中追加元素

array_push($arr,$str);

把$str追加到数组$arr中


数组重新随机排序

shuffle($arr);


分割数组

array_slice($arr,'开始位置','个数')


 二维数组转一维数组

array_column($arr,'字段')  


获取数组value的key的值

array_keys($arr,$value)


 以相反的顺序返回数组

array_reverse

语法array_reverse(array,preserve)

第二个参数可选:默认false,规定是否保留原始数组的键名;true为保留

$a=array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota");
array_reverse($a)

//结果Array ( [c] => Toyota [b] => BMW [a] => Volvo )


array_pop — 将数组最后一个单元弹出(出栈)

$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);
result:
Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)

与之对应的array_push函数将一个或多个单元压入数组的末尾(入栈) 

$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);

result:
Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)

array_shift() 将 array 的第一个单元移出

$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);

result:
Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
)

array_unshift — 在数组开头插入一个或多个单元

$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");

result:
Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)

数组中删除元素

$arr = array('a','b','c','d');  
unset($arr[1]);  
print_r($arr); 

print_r($arr)之后,结果却不是那样的,最终结果是 Array ( [0] => a [2] => c [3] => d );

unset索引未改变

array_splice()移除元素后重新索引

那么怎么才能做到缺少的元素会被填补并且数组会被重新索引呢?答案是array_splice()

$arr = array('a','b','c','d');  
array_splice($arr,1,1);  
print_r($arr); 

print_r($arr)之后,结果是Array ( [0] => a [1] => c [2] => d )

array_map — 将回调函数作用到给定数组的单元上

function cube($n)
{
    return($n * $n * $n);
}
 
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);

result:
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

 array_count_values()  统计数组中所有值出现的次数

$arr     = array(1,3,2,3,2,4);
$sortArr = array_count_values($arr);
var_dump($sortArr);

result:
array (size=4)
  1 => int 1
  3 => int 2
  2 => int 2
  4 => int 1

顺便可以用sort()函数进行排序,可以从高到底统计出现次数最多的字符,再用key($sortArr)获取次数最多的key,用reset($sortArr)获取次数最多的值

完整的例子:

$test = 'djasflkj2l3fjosadf,a.,gdflgk';
$testArr = str_split($test); //分割字符串
$sortArr = array_count_values($testArr);//统计数组中所有值出现的次数
arsort($sortArr); 
printf("最多的字符:%s,次数:%d",key($sortArr),reset($sortArr));

array_keys()  返回数组中所有的键名

array array_keys ( array $input [, mixed $search_value [, bool $strict ]] )
array_keys() 返回 input 数组中的数字或者字符串的键名。

举例

$array = array(0 => 100, "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));

结果

Array
(
    [0] => 0
    [1] => color
)
Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
Array
(
    [0] => color
    [1] => size
)

 array_change_key_case()函数将数组的所有的键都转换为大写字母或小写字母。

如果在运行该函数时两个或多个键相同,则最后的元素会覆盖其他元素

array_change_key_case(array,case);
参数描述
array 必需。规定要使用的数组。
case

可选。可能的值:

  • CASE_LOWER - 默认值。将数组的键转换为小写字母。
  • CASE_UPPER - 将数组的键转换为大写字母。

array_flip() 

数组键值对调位置

原文地址:https://www.cnblogs.com/blueskycc/p/4671789.html