欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP中常用的十个数组函数

程序员文章站 2024-03-17 16:39:16
...

in_array

【in_əˈrā】
检查数组中是否存在某个值

<?php

@see https://www.php.net/manual/zh/function.in-array.php
// in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool
// 大海捞针,在大海(haystack)中搜索针( needle),如果没有设置 strict 则使用宽松的比较。

$haystack = ['a', 'b', 'c', 'd'];
var_dump(in_array('a', $haystack));

// bool(true)

array_search

在数组中搜索给定的值,如果成功则返回首个相应的键名

<?php

@see https://www.php.net/manual/zh/function.array-search.php
// array_search ( mixed $needle , array $haystack [, bool $strict = false ] ) : mixed
// 大海捞针,在大海(haystack)中搜索针( needle),如果没有设置 strict 则使用宽松的比较。

$haystack = ['a', 'b', 'c', 'd'];
var_dump(array_search('a', $haystack));
// int(0)


$haystack = ['a', 'b', 'c', 'd'];
var_dump(array_search('a', $haystack));
// bool(false)

array_key_exists

检查数组里是否有指定的键名或索引

<?php

@see https://www.php.net/manual/zh/function.array-key-exists.php
// array_key_exists ( mixed $key , array $array ) : bool
// 数组里有键 key 时,array_key_exists() 返回 TRUE。 key 可以是任何能作为数组索引的值。

$haystack = ['a', 'b', 'c', 'd'];
var_dump(array_key_exists(0, $haystack));
// bool(true)

$haystack = ['a', 'b', 'c', 'd'];
var_dump(array_key_exists(4, $haystack));
// bool(false)

$haystack = ['a'=>'aa', 'b'=>'bb', 'c'=>'cc', 'd'=>'dd'];
var_dump(array_key_exists('a', $haystack));
// bool(true)

array_values

返回数组中所有的值

<?php

@see https://www.php.net/manual/zh/function.array-key-exists.php
// array_values ( array $array ) : array
// array_values() 返回$array数组中所有的值并给其建立数字索引。

$haystack = ['a'=>'aa', 'b'=>'bb', 'c'=>'cc', 'd'=>'dd'];
var_dump(array_values($haystack));

Array
(
    [0] => aa
    [1] => bb
    [2] => cc
    [3] => dd
)

array_filter

用回调函数过滤数组中的单元

<?php

@see https://www.php.net/manual/zh/function.array-filter.php

array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array

array:要循环的数组

callback:使用的回调函数。 
	如果没有提供 callback 函数, 将删除 array 中所有等值为 FALSE 的条目。更多信息见转换为布尔值。

flag:决定callback接收的参数形式:

	ARRAY_FILTER_USE_KEY - callback接受键名作为的唯一参数
	ARRAY_FILTER_USE_BOTH - callback同时接受键名和键值


依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。




function myfilter($item)
{
    if ($item === 'bb')
    {
        return false;
    }

    return true;
}

$haystack = ['a'=>'aa', 'b'=>'bb', 'c'=>'cc', 'd'=>'dd'];
print_r(array_filter($haystack,'myfilter'));

Array
(
    [a] => aa
    [c] => cc
    [d] => dd
)


array_column

返回数组中指定的一列

<?php

@see https://www.php.net/manual/zh/function.array-column.php
// array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array
// array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。


// 取出数组中的password列
$haystack = [
    ['user' => 'user1', 'password' => 'password1'],
    ['user' => 'user2', 'password' => 'password2'],
    ['user' => 'user3', 'password' => 'password3'],
    ['user' => 'user4', 'password' => 'password4'],
];
print_r(array_column($haystack,'password'));

Array
(
    [0] => password1
    [1] => password2
    [2] => password3
    [3] => password4
)

// 取出数组中的password列,并使用user列做为key值。
print_r(array_column($haystack,'password'));

Array
(
    [user1] => password1
    [user2] => password2
    [user3] => password3
    [user4] => password4
)

array_merge

合并一个或多个数组

<?php

@see https://www.php.net/manual/zh/function.array-merge.php
// array_merge ( array $array1 [, array $... ] ) : array
// 如果数组中key相同,则value取最后一个相同key的value

$haystack_1 = ['user' => 'user1', 'password' => 'password1'];
$haystack_2 = ['user' => 'user2', 'email' => 'email2'];
print_r(array_merge($haystack_1, $haystack_2));

Array
(
    [user] => user2
    [password] => password1
    [email] => email2
)


array_pop

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

<?php

@see https://www.php.net/manual/zh/function.array-pop.php
// array_pop ( array &$array ) : mixed
// 弹出数组最后一个单元(出栈),传递的参数为数组指针,返回值为出栈元素。

$haystack = ['user' => 'user1', 'password' => 'password1'];

print_r(array_pop($haystack)); // password1

print_r($haystack);

(
    [user] => user1
)


list

把数组中的值赋给一组变量

<?php

@see https://www.php.net/manual/zh/function.list.php
list ( mixed $var1 [, mixed $... ] ) : array
// 可以理解为出栈,传递的参数为数组指针,返回值为出栈元素。

$haystack = ['user', 'password'];
list($u, $p) = $haystack;
echo $u.$p;

userpassword

ksort

对数组按照键名排序

<?php

@see https://www.php.net/manual/zh/function.ksort.php
ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
// 对数组按照键名排序,保留键名到数据的关联。成功时返回 TRUE, 或者在失败时返回 FALSE。

$haystack = [
    'c'=>'value', 
    'a'=>'value', 
    'b'=>'value'
];
ksort($haystack);
print_r($haystack);

Array
(
    [a] => value
    [b] => value
    [c] => value
)