10个PHP阵列功能以及如何使用它们
#php #数组

in_array()

This array method checks if a value is in a given array. It accepts 3 arguments:

- The value we want to search for in an array.
- The array from which we want to search for the value.
- An optional third boolean argument. If this value is provided, `in_array()` will check if the type of the value and its equivalent in the array are the same.

It returns a `boolean`, that is, `true` or `false` depending on if the value is found in the array or not.
$companies = ['facebook', 'twitter', 'google', 'apple'];
in_array('facebook', $companies);
//true
in_array('amazon', $companies);
//false

$numbers = [1, '2', 3, 4, 5, 6];
in_array(1, $numbers);
//true
in_array(2, $numbers, true);
//false

我们还可以使用此功能在数组中搜索数组。

$colors = [['green', 'blue'], ['red', 'yellow'], 'black'];

if (in_array(['green', 'blue'], $colors)) {
    echo "found!";
}
//found!

array_push()

It adds one or more new items at the end of an array and increases the length of the array by the number of new items added.

It takes in two arguments:

- The input array.
- The list of items to be added to the array.
$friends = ['Alice', 'Bob', 'Charlie'];

array_push($friends, 'Dave');

print_r($friends);
// ['Alice', 'Bob', 'Charlie', 'Dave']

$fruits = ['apple', 'banana', 'orange'];

array_push($fruits, 'kiwi', 'mango', 'Grapefruit');

print_r($fruits);
//['apple', 'banana', 'orange', 'kiwi', 'mango', 'Grapefruit']

array_push()做的与使用速记语法添加到数组的同一件事:

$friends = ['Alice', 'Bob', 'Charlie'];

$friends[] = 'Danny';

print_r($friends);

//['Alice', 'Bob', 'Charlie', 'Danny']

array_pop()

它从数组的末端删除并返回删除的数组项目。

它一次将阵列的长度降低1。

只需要一个参数,即修改的数组。


$birds = ['sparrow', 'crow', 'pigeon'];

$last_bird = array_pop($birds);

print_r($birds);
//['sparrow', 'crow']

echo "Removed bird: " . $last_bird;
//Removed bird: pigeon

array_keys()

它采用数组,并在数字索引数组中返回所有或某些键。

它接受三个参数:

  • 输入数组。
  • 一个可选的过滤器值,该值指定应返回数组的数量。如果未提供,将返回所有密钥。

  • 可选的第三个布尔参数,默认值为false。如果提供了此值,array_keys()将检查值的类型及其等效数字是否相同。

$countries = [
    'USA' => 'United States',
    'CAN' => 'Canada',
    'MEX' => 'Mexico',
    'BRA' => 'Brazil',
    'ARG' => 'Argentina'
];

$codes = array_keys($countries);

print_r($codes);
//['USA', 'CAN', 'MEX', 'BRA', 'ARG']

要仅返回USA键,我们将在array_keys()方法中添加第二个参数。

第二个参数可以是任何类型的值,例如字符串,数字或布尔值。但是,它不能是一个函数。

$countries = [
    'USA' => 'United States',
    'CAN' => 'Canada',
    'MEX' => 'Mexico',
    'BRA' => 'Brazil',
    'ARG' => 'Argentina'
];

$codes = array_keys($countries, 'United States');

print_r($codes);
//['USA']

当我们添加第三个参数时,它会检查2整数是否等于'2' a字符串,因为它们不同,它返回一个空数组。

$countries = [
    'one' => 1,
    'two' => '2',
    'three' => 3,
    'four' => 5,
    'six' => 6
];

$codes = array_keys($countries, 2, true);

print_r($codes);
//[]

但是,当我们确保类型相同时,它会返回键。

$countries = [
    'one' => 1,
    'two' => '2',
    'three' => 3,
    'four' => 5,
    'six' => 6
];

$codes = array_keys($countries, '2', true);

print_r($codes);
//[]

array_values()

它采用关联数组,并在数字索引数组中返回所有值。

它接受一个参数,数组。

$smartphones = [
    "Samsung" => "Galaxy S21",
    "Apple" => "iPhone 12",
    "Google" => "Pixel 5"
];

$smartphone_models = array_values($smartphones);

print_r($smartphone_models);
//['Galaxy S21', 'iPhone 12', 'Pixel 5']

array_merge()

它需要两个或多个数组,并将它们合并以形成一个数组。它返回新数组。

$terrestrial_planets = ['Mercury', 'Venus', 'Earth', 'Mars'];

$gas_giants = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];

$all_planets = array_merge($terrestrial_planets, $gas_giants);

print_r($all_planets);

//['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']

带有三个数组的示例。


$indoor_hobbies = ['Reading', 'Drawing', 'Cooking', 'Gaming'];

$outdoor_hobbies = ['Hiking', 'Fishing', 'Camping'];

$social_hobbies = ['Dancing', 'Singing', 'Playing instruments'];

$all_hobbies = array_merge($indoor_hobbies, $outdoor_hobbies, $social_hobbies);

print_r($all_hobbies);

//['Reading', 'Drawing', 'Cooking', 'Gaming', 'Hiking', 'Fishing', 'Camping', 'Dancing', 'Singing', 'Playing instruments']

array_slice()

它提取阵列的一部分。它从字面上取出了一片阵列,就像取出一片面包一样。

它不会更改阵列的值,在切片操作后,原始数组保持不变,并且不会以任何方式更改或更改。

它需要四个参数:

  • 所需的输入数组。
  • 提取的起点。这是一个整数,是必需的。
  • 要提取的项目数。这是一个整数和可选的,如果未提供,则该功能将从数组末端提取或切成阵列。
  • 可选的布尔值,该值决定是否保留输入数组的键。如果是真的,将保留钥匙。如果是错误的,则键将被重新索引。

$sports = ['Basketball', 'Football', 'Baseball', 'Soccer', 'Tennis', 'Swimming'];

$slice_sports = array_slice($sports, 0);

print_r($slice_sports);
//['Football', 'Baseball', 'Soccer', 'Tennis', 'Swimming']

在上面的代码中,未提供要提取的项目数,因此将数组从第二个值提取到最后一个值。

注意:阵列索引从0开始。


$sports = ['Basketball', 'Football', 'Baseball', 'Soccer', 'Tennis', 'Swimming'];

$middle_sports = array_slice($sports, 2, 2, true);

print_r($middle_sports);
//['Baseball', 'Soccer']

在上面的代码中,提供了起点,还提供了要提取的2的数组数。最后一个参数确保提取的数组项将其保留在原始数组中的索引。

array_reduce()

它在项目的值上迭代地应用用户定义的函数,也就是说,它采用用户定义的函数,并将数组中的所有值通过函数一个接一个地传递,并将数组项减少到单个值。

它的常见用途是在数字数组上执行算术操作,但也可以用来连接一个字符串。

它需要三个参数:

  • 所需的输入数组
  • 所需的用户定义功能
  • 一个可选的初始值,其中字符串串联或数字算法以。
  • 开头。

让我们添加一个数字。


$numbers = [1, 2, 3, 4, 5];

function add_numbers($accumulator, $current_value) {
     return $accumulator + $current_value;
}

$sum = array_reduce($numbers, 'add_numbers', 0);

echo $sum; // Output: 15

我们可以将初始值设置为任何任意号码。


$numbers = [1, 2, 3, 4, 5];

function add_numbers($accumulator, $current_value) {
     return $accumulator + $current_value;
}

$sum = array_reduce($numbers, 'add_numbers', 10);

echo $sum; // Output: 25

串联字符串。


function add_words($prev, $next) {
return $prev . "-" . $next;
}
$pest = ["Dog","Cat","Horse"];
print_r(array_reduce($pest, "add_words", '**'));

//**-Dog-Cat-Horse

count()

它计算数组中的元素数量。它返回一个整数并进行两个参数:

  • 所需的输入数组。
  • 可以是COUNT_NORMAL的可选模式标志,这是正常的计数行为。它仅在顶级数组中计数,并且嵌套数组中没有计数。另一个是COUNT_RECURSIVE,这计算了嵌套数组中的元素数量。

使用普通count()行为的示例。您无需将COUNT_NORMAL标志放在count()函数中即可使用它,因为这是默认值。


$oceans = ["Atlantic", "Pacific", "Indian", "Southern", "Arctic"];

$count = count($oceans);

echo "There are $count oceans in the world.";

//There are 5 oceans in the world.

使用COUNT_RECURSIVE标志的另一个示例。请注意,该函数首先计数数组内容,然后将其添加到嵌套数组的总和中。


$animals = [
    ["cat", "dog", "horse"],
    ["parrot", "eagle", "ostrich"],
    ["salmon", "tuna", "shark", "octopus"],
    "tiger"
];

$count = count($animals, COUNT_RECURSIVE);
echo "There are $count animals in the zoo.";

//There are 14 animals in the zoo.

array_reverse()

它用于逆转数组中元素的顺序。它返回一系列相反的元素,并接受两个参数:

  • 所需的输入数组。
  • 一个可选的布尔论证,可以确定新数组是否保留其钥匙。默认情况下,该参数为false,这意味着除非另有说明,否则返回的数组将从0开始具有新的键。
$courses = ["Math", "English", "Science", "History"];

$reversed = array_reverse($courses);

print_r($reversed);
/*
Array
(
    [0] => History
    [1] => Science
    [2] => English
    [3] => Math
)
*/

这是一个逆转后保留键的示例。

$mountains = ["Everest" => 8848, "K2" => 8611, "Kangchenjunga" => 8586, "Lhotse" => 8516];
$reversed = array_reverse($mountains, true);

print_r($reversed);
/*
[
    "Lhotse" => 8516,
    "Kangchenjunga" => 8586,
    "K2" => 8611,
    "Everest" => 8848
];
*/

结论

PHP中的数组用于将多个值存储在一个变量中。讨论的功能对于操纵和修改数组至关重要。

学习这些功能对于任何定期使用数组的PHP开发人员来说都是必不可少的,因为它们可以简化复杂的数组操作并在处理大型数据集时节省时间。了解如何使用这些功能可以使编写高效和有效的代码,提高性能并避免使用阵列时更容易编写

中的错误。