> 백엔드 개발 > PHP 튜토리얼 > PHP 배열을 사용하는 방법

PHP 배열을 사용하는 방법

不言
풀어 주다: 2023-04-02 21:42:02
원래의
2441명이 탐색했습니다.

이 글은 주로 PHP 배열의 사용법을 소개하는데, 이는 특정 참조 가치가 있습니다. 이제 도움이 필요한 친구들이 참고할 수 있도록 공유합니다.

이 튜토리얼에서는 예제와 모범 사례를 통해 PHP에서 일반적으로 사용되는 배열 함수 목록을 살펴보세요. 모든 PHP 엔지니어는 이를 사용하는 방법과 이를 결합하여 더 간결하고 읽기 쉬운 코드를 작성하는 방법을 알아야 합니다.

또한 관련 링크에서 다운로드하여 팀과 공유할 수 있는 관련 샘플 코드 프레젠테이션을 제공하여 더욱 강력한 팀을 구축할 수 있습니다.

시작하기

배열 키 이름과 키 값을 처리하는 몇 가지 기본 배열 함수부터 시작하겠습니다. 배열 함수의 멤버인 array_combine()은 한 배열의 값을 키로 사용하고 다른 배열의 값을 값으로 사용하여 완전히 새로운 배열을 만드는 데 사용됩니다.

<?php
$keys = [&#39;sky&#39;, &#39;grass&#39;, &#39;orange&#39;];
$values = [&#39;blue&#39;, &#39;green&#39;, &#39;orange&#39;];

$array = array_combine($keys, $values);

print_r($array);
// Array
// (
//     [sky] => blue
//     [grass] => green
//     [orange] => orange
// )
로그인 후 복사

You 알아야 할 것은 array_values() 함수는 인덱스 배열 형태로 배열의 값을 반환하고, array_keys()는 주어진 배열의 키 이름을 반환하며, array_flip() 함수는 해당 함수를 교환하는 것입니다. 배열의 키 값과 키 이름:

<?php

print_r(array_keys($array));// [&#39;sky&#39;, &#39;grass&#39;, &#39;orange&#39;]

print_r(array_values($array));// [&#39;blue&#39;, &#39;green&#39;, &#39;orange&#39;]

print_r(array_flip($array));
// Array
// (
//     [blue] => sky
//     [green] => grass
//     [orange] => orange
// )
로그인 후 복사

Simplified code

list() 함수, 정확히 말하면 함수가 아니라 언어 구조입니다. 단일 작업으로 배열의 값을 변경할 수 있는 변수 세트에 값을 할당합니다. 예를 들어 list() 함수의 기본 사용법은 다음과 같습니다.

<?php
// 定义数组
$array = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;];

// 不使用 list()
$a = $array[0];
$b = $array[1];
$c = $array[2];

// 使用 list() 函数
list($a, $b, $c) = $array;
로그인 후 복사

이 언어 구조는 preg_split()과 결합됩니다. 또는 #🎜 🎜#explode() 이 유형의 함수가 더 효과적입니다. 일부 값을 정의할 필요가 없으면 일부 매개변수 할당을 직접 건너뛸 수 있습니다.

$string = &#39;hello|wild|world&#39;;

list($hello, , $world) = explode(&#39;|&#39;, $string);
echo $hello, &#39; &#39;, $world;
로그인 후 복사
#🎜 🎜#또한 #🎜🎜 #list()

foreach 순회에도 사용할 수 있습니다. 이 사용법은 다음 언어 구조를 더 잘 활용할 수 있습니다.

$arrays = [[1, 2], [3, 4], [5, 6]];

foreach ($arrays as list($a, $b)) {
    $c = $a + $b;

    echo $c, &#39;, &#39;;
}
로그인 후 복사
#🎜 🎜#번역가의 참고: list() 언어 구성은 숫자로 색인된 배열에서만 작동하며 기본 색인은 0부터 시작하며 연관 배열에서는 사용할 수 없습니다. 설명서를 참조하세요.

그리고 extract() 함수를 사용하면 연관 배열을 변수(기호 테이블)로 내보낼 수 있습니다. 배열의 각 요소에 대해 해당 키 이름은 생성할 변수 이름으로 사용되며 변수 값은 해당 요소의 값이 됩니다.
<?php
$array = [
    &#39;clothes&#39; => &#39;t-shirt&#39;,
    &#39;size&#39; => &#39;medium&#39;,
    &#39;color&#39; => &#39;blue&#39;,
];

extract($array);

echo $clothes, &#39; &#39;, $size, &#39; &#39;, $color;
로그인 후 복사
사용자 데이터 처리 시 참고 사항( 요청된 데이터 등)# 🎜🎜#extract()
함수는 안전한 함수이므로 현재로서는

EXTR_IF_EXISTS

과 같은 더 나은 플래그 유형을 사용하는 것이 좋습니다. EXTR_PREFIX_ALL. extract() 함수의 역연산은 변수 이름으로 연관 배열을 만드는 데 사용되는 Compact() 함수입니다.

<?php
$clothes = &#39;t-shirt&#39;;
$size = &#39;medium&#39;;
$color = &#39;blue&#39;;

$array = compact(&#39;clothes&#39;, &#39;size&#39;, &#39;color&#39;);
print_r($array);

// Array
// (
//     [clothes] => t-shirt
//     [size] => medium
//     [color] => blue
// )
로그인 후 복사
#🎜 🎜#Filter function# 🎜🎜#

PHP는 배열 필터링을 위한 멋진 기능을 제공합니다. 바로 array_filter()입니다. 함수의 첫 번째 매개변수로 처리할 배열을 사용하고, 두 번째 매개변수는 익명 함수입니다. 배열의 요소가 유효성 검사를 통과하도록 하려면 익명 함수가

true을 반환하고, 그렇지 않으면 false

을 반환합니다.

<?php

$numbers = [20, -3, 50, -99, 55];

$positive = array_filter($numbers, function ($number) {
    return $number > 0;
});

print_r($positive);// [0 => 20, 2 => 50, 4 => 55]
로그인 후 복사

함수는 전달 값 필터만 지원합니다.

ARRAY_FILTER_USE_KEY 또는 ARRAY_FILTER_USE_BOTH을 세 번째 매개변수로 사용하여 배열의 키 값을 사용할지 아니면 키 값과 키 이름을 모두 매개변수로 사용할지 지정할 수도 있습니다. 콜백 함수.

array_filter() 함수 없이 null 값을 제거하는 콜백 함수를 정의할 수도 있습니다.

<?php
$numbers = [-1, 0, 1];

$not_empty = array_filter($numbers);

print_r($not_empty);// [0 => -1, 2 => 1]
로그인 후 복사
array_unique()를 사용할 수 있습니다. 함수 배열에서 고유한 값 요소를 가져옵니다. 이 함수는 원래 배열에 있는 고유 요소의 키 이름을 유지합니다.
<?php
$array = [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5];

$uniques = array_unique($array);

print_r($uniques);
print_r($array);
// Array
// (
//     [0] => 1
//     [4] => 2
//     [7] => 3
//     [8] => 4
//     [9] => 5
// )
로그인 후 복사

array_column() 함수는 다차원 배열(다차원)에서 지정된 열의 값을 가져올 수 있습니다. , 예를 들어 SQL 데이터베이스에서 답변을 얻거나 데이터를 가져오기 위한 CSV 파일입니다. 배열과 지정된 열 이름을 전달하기만 하면 됩니다.

<?php
$array = [
    [&#39;id&#39; => 1, &#39;title&#39; => &#39;tree&#39;],
    [&#39;id&#39; => 2, &#39;title&#39; => &#39;sun&#39;],
    [&#39;id&#39; => 3, &#39;title&#39; => &#39;cloud&#39;],
];

$ids = array_column($array, &#39;id&#39;);

print_r($ids);// [1, 2, 3]
로그인 후 복사
PHP 7부터 array_column

은 객체를 포함하는 배열을 지원하기 시작하므로 더 강력해집니다. 따라서 Array를 처리할 때 모델이 더욱 쉬워집니다:

<?php
$cinemas = Cinema::find()->all();
$cinema_ids = array_column($cinemas, &#39;id&#39;); // php7 forever!
로그인 후 복사

배열 순회 처리

array_map()을 사용하면 배열의 각 요소에 대해 콜백 메서드를 실행할 수 있습니다. 함수 이름이나 익명 함수를 전달하여 주어진 배열을 기반으로 새 배열을 얻을 수 있습니다:

<?php
$cities = [&#39;Berlin&#39;, &#39;KYIV&#39;, &#39;Amsterdam&#39;, &#39;Riga&#39;];
$aliases = array_map(&#39;strtolower&#39;, $cities);

print_r($aliases);// [&#39;berlin&#39;, &#39;kyiv, &#39;amsterdam&#39;, &#39;riga&#39;]

$numbers = [1, -2, 3, -4, 5];
$squares = array_map(function ($number) {
    return $number ** 2;
}, $numbers);

print_r($squares);// [1, 4, 9, 16, 25]
로그인 후 복사
이 함수에 대해 배열 키 이름과 키 값을 전달할 수 없다는 소문도 있습니다. 동시에 함수에 콜백을 추가하지만 지금은 이를 중단하겠습니다.
<?php
$model = [&#39;id&#39; => 7, &#39;name&#39; => &#39;James&#39;];
$res = array_map(function ($key, $value) {
    return $key . &#39; is &#39; . $value;
}, array_keys($model), $model);

print_r($res);
// Array
// (
//     [0] => id is 7
//     [1] => name is James
// )
로그인 후 복사

하지만 이런 식으로 수행하는 것은 정말 보기 흉합니다. 대신 array_walk() 함수를 사용하는 것이 더 좋습니다. 이 함수는

array_map()

과 유사하게 동작하지만 작동 원리는 완전히 다릅니다. 먼저 배열은 참조로 전달되므로

array_walk()

에서는 새 배열을 생성하지 않고 원본 배열을 직접 수정합니다. 따라서 소스 배열로서 참조 전달 방법을 사용하여 배열의 값을 콜백 함수에 전달할 수 있으며 배열의 키 이름을 직접 전달할 수 있습니다.

<?php
$fruits = [
    &#39;banana&#39; => &#39;yellow&#39;,
    &#39;apple&#39; => &#39;green&#39;,
    &#39;orange&#39; => &#39;orange&#39;,
];

array_walk($fruits, function (&$value, $key) {
    $value = $key . &#39; is &#39; . $value;
});

print_r($fruits);
로그인 후 복사

Array 연결 작업#🎜🎜 ##🎜🎜 #PHP에서 배열을 병합하는 가장 좋은 방법은 array_merge() 함수를 사용하는 것입니다. 모든 배열 옵션은 하나의 배열로 병합되며 동일한 키 이름을 가진 값은 마지막 값인

으로 덮어쓰여집니다.

<?php
$array1 = [&#39;a&#39; => &#39;a&#39;, &#39;b&#39; => &#39;b&#39;, &#39;c&#39; => &#39;c&#39;];
$array2 = [&#39;a&#39; => &#39;A&#39;, &#39;b&#39; => &#39;B&#39;, &#39;D&#39; => &#39;D&#39;];
 
$merge = array_merge($array1, $array2);
print_r($merge);
// Array
// (
//     [a] => A
//     [b] => B
//     [c] => c
//     [D] => D
// )
로그인 후 복사
译注:有关合并数组操作还有一个「+」号运算符,它和 array_merge() 函数的功能类似都可以完成合并数组运算,但是结果有所不同,可以查看 PHP 合并数组运算符 + 与 array_merge 函数 了解更多细节。

为了实现从数组中删除不在其他数组中的值(译注:计算差值),使用 array_diff()。还可以通过 array_intersect() 函数获取所有数组都存在的值(译注:获取交集)。接下来的示例演示它们的使用方法:

<?php
$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];

$diff = array_diff($array1, $array2);
$intersect = array_intersect($array1, $array2);

print_r($diff); // 差集 [0 => 1, 1 => 2]
print_r($intersect); //交集 [2 => 3, 3 => 4]
로그인 후 복사

数组的数学运算

使用 array_sum() 对数组元素进行求和运算,array_product 对数组元素执行乘积运算,或者使用 array_reduce() 处理自定义运算规则:

<?php

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

print_r(array_sum($numbers));// 15

print_r(array_product($numbers));// 120

print_r(array_reduce($numbers, function ($carry, $item) {
    return $$carry ? $carry / $item : 1;
}));// 0.0083 = 1/2/3/4/5
로그인 후 복사

为了实现统计数组中值的出现次数,可以使用 array_count_values() 函数。它将返回一个新数组,新数组键名为待统计数组的值,新数组的值为待统计数组值的出现次数:

<?php

$things = [&#39;apple&#39;, &#39;apple&#39;, &#39;banana&#39;, &#39;tree&#39;, &#39;tree&#39;, &#39;tree&#39;];
$values = array_count_values($things);

print_r($values);

// Array
// (
//     [apple] => 2
//     [banana] => 1
//     [tree] => 3
// )
로그인 후 복사

生成数组

需要以给定值生成固定长度的数组,可以使用 array_fill() 函数:

<?php
$bind = array_fill(0, 5, &#39;?&#39;);
print_r($bind);
로그인 후 복사

根据范围创建数组,如小时或字母,可以使用 range() 函数:

<?php
$letters = range(&#39;a&#39;, &#39;z&#39;);
print_r($letters); // [&#39;a&#39;, &#39;b&#39;, ..., &#39;z&#39;]

$hours = range(0, 23);
print_r($hours); // [0, 1, 2, ..., 23]
로그인 후 복사

为了实现获取数组中的部分元素 - 比如,获取前三个元素 - 使用 array_slice() 函数:

<?php
$numbers = range(1, 10);
$top = array_slice($numbers, 0, 3);

print_r($top);// [1, 2, 3]
로그인 후 복사

排序数组

首先谨记 PHP 中有关排序的函数都是 引用传值 的,排序成功返回 true 排序失败返回 false。排序的基础函数是 sort() 函数,它执行排序后的结果不会保留原索引顺序。排序函数可以归类为以下几类:

  • a 保持索引关系进行排序

  • k 依据键名排序

  • r 对数组进行逆向排序

  • u 使用用户自定义排序规则排序

你可以从下表看到这些排序函数:


akru
aasort
arsortuasort
k
ksortkrsort
rarsortkrsortrsort
uuasort

usort

数组函数的组合使用

数组处理的艺术是组合使用这些数组函数。这里我们通过 array_filter()array_map() 函数仅需一行代码就可以完成空字符截取和去控制处理:

<?php
$values = [&#39;say&#39;, &#39;  bye&#39;, &#39;&#39;, &#39; to&#39;, &#39; spaces  &#39;, &#39;    &#39;];
$words = array_filter(array_map(&#39;trim&#39;, $values));

print_r($words);// [&#39;say&#39;, &#39;bye&#39;, &#39;to&#39;, &#39;spaces&#39;]
로그인 후 복사

依据模型数组创建 id 和 title 数据字典,我们可以结合使用 array_combine()array_column() 函数:

<?php
$models = [$model, $model, $model];

$id_to_title = array_combine(
    array_column($models, &#39;id&#39;),
    array_column($models, &#39;title&#39;)
);

print_r($id_to_title);
로그인 후 복사
译注:提供一个 可运行的版本。

为了实现获取出现频率最高的数组元素,我们可以使用 array_count_values()arsort()array_slice() 这几个函数:

<?php

$letters = [&#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;b&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;d&#39;, &#39;d&#39;, &#39;d&#39;, &#39;d&#39;];

$values = array_count_values($letters);
arsort($values);
$top = array_slice($values, 0, 3);

print_r($top);
로그인 후 복사

还可以轻易的通过 array_sum()array_map() 函数仅需数行就能完成计算订单的价格:

<?php
$order = [
    [&#39;product_id&#39; => 1, &#39;price&#39; => 99, &#39;count&#39; => 1],
    [&#39;product_id&#39; => 2, &#39;price&#39; => 50, &#39;count&#39; => 2],
    [&#39;product_id&#39; => 2, &#39;price&#39; => 17, &#39;count&#39; => 3],
];

$sum = array_sum(array_map(function ($product_row) {
    return $product_row[&#39;price&#39;] * $product_row[&#39;count&#39;];
}, $order));

print_r($sum);// 250
로그인 후 복사

总结

正如你所看到的那样,掌握主要的数组函数可以是我们的代码更精简且易于阅读。当然,PHP 提供了比列出来的要多得多的数组函数,并且还提供了额外参数及标识参数,但是我觉得本教程中已经涵盖了 PHP 开发者应该掌握的最基本的一些。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

PHP缓存区ob的介绍

为多个PHP-FPM容器量身打造单一Nginx镜像的方法

위 내용은 PHP 배열을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿