"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PHP의 새로운 배열 함수

PHP의 새로운 배열 함수

2024-08-21에 게시됨
검색:123

New Array Functions in PHP

소개

PHP 8.4는 2024년 11월에 출시될 예정이며 몇 가지 편리한 새 배열 기능을 도입할 예정입니다.

  • 배열_찾기
  • array_find_key
  • 배열_모두
  • 배열_모두

이 글에서는 이러한 새로운 기능을 간략히 살펴보고 PHP 8.4를 실행하는 프로젝트에서 해당 기능을 사용할 수 있는 방법을 살펴보겠습니다.

Laravel 개발자라면 Illuminate\Support\Collection 및 Illuminate\Support\Arr 클래스에 유사한 기능이 이미 있다는 것을 알 수 있습니다. 하지만 저는 이러한 기능이 PHP에 기본적으로 포함되어 모든 PHP 프로젝트에서 사용할 수 있다는 점을 좋아합니다.

Laravel 개발자인 독자들을 위해 PHP 8.4를 기다리지 않고도 Laravel 프로젝트에서 동일한 기능을 얻을 수 있도록 이러한 새로운 기능에 해당하는 Laravel 기능을 보여 드리겠습니다.

PHP 8.4의 새로운 "속성 후크" 기능에 대해 설명하는 다른 기사도 확인해 보세요.

array_find 함수

array_find 함수는 콜백에 정의된 기준과 일치하는 첫 번째 요소의 값을 반환합니다. 콜백과 일치하는 요소가 없으면 함수는 null을 반환합니다.

간단한 예를 살펴보겠습니다. 우리는 일련의 제품이 있고 바코드가 123456:
인 제품을 찾고 싶다고 가정합니다.

$products = [
    [
        'name' => 'Macbook Pro',
        'type' => 'Laptop',
        'barcode' => 123456,
    ],
    [
        'name' => 'Framework Laptop 13',
        'type' => 'Laptop',
        'barcode' => 789012,
    ],
    [
        'name' => 'Samsung Galaxy S24',
        'type' => 'Phone',
        'barcode' => 135791,
    ],
];

// Find the product with barcode 123456
$findProduct = array_find(
    array: $products,
    callback: function (array $product): bool {
        return $product['barcode'] == 123456;
    },
);

위 코드를 실행한 후 $findProduct는 다음과 같습니다.

[
    'name'=> 'Macbook Pro',
    'type' => 'Laptop',
    'barcode' => 123456,
]

화살표 함수를 두 번째 인수로 사용하여 이를 좀 더 정리할 수 있습니다.

$findProduct = array_find(
    array: $products,
    callback: fn (array $product): bool => $product['barcode'] === 123456,
);

위 코드는 이전 예제와 동일한 결과를 반환합니다.

콜백과 일치하는 요소가 없으면 함수는 null을 반환합니다. 이에 대한 예를 살펴보겠습니다.

$nonExistentProduct = array_find(
    array: $products,
    callback: fn (array $product): bool => $product['barcode'] === 'invalid',
);

이 경우 $nonExistentProduct는 null과 같습니다.

라라벨 등가물

Laravel에서는 Arr::first 메소드를 사용하여 비슷한 결과를 얻을 수 있습니다:

use Illuminate\Support\Arr;

$findProduct = Arr::first(
    $products,
    fn (array $product): bool => $product['barcode'] === 123456,
);

array_find_key 함수

이 함수는 array_find 함수와 유사하지만 콜백과 일치하는 첫 번째 요소의 값을 반환하는 대신 콜백과 일치하는 첫 번째 요소의 키를 반환합니다.

이전의 $products 예제 배열을 살펴보겠습니다. 이번에는 바코드가 789012:
인 제품의 키를 찾아보겠습니다.

$products = [
    [
        'name' => 'Macbook Pro',
        'type' => 'Laptop',
        'barcode' => 123456,
    ],
    [
        'name' => 'Framework Laptop 13',
        'type' => 'Laptop',
        'barcode' => 789012,
    ],
    [
        'name' => 'Samsung Galaxy S24',
        'type' => 'Phone',
        'barcode' => 135791,
    ],
];

// Find the key of the product with barcode 789012
$findProduct = array_find_key(
    array: $products,
    callback: fn (array $product): bool => $product['barcode'] === 789012,
);

위 코드를 실행한 후 제품이 배열의 두 번째 요소이므로 $findProduct는 1과 같습니다.

콜백과 일치하는 요소가 없으면 함수는 null을 반환합니다. 이에 대한 예를 살펴보겠습니다.

$nonExistentProduct = array_find_key(
    array: $products,
    callback: fn (array $product): bool => $product['barcode'] === 'invalid',
);

이 경우 $nonExistentProduct는 null과 같습니다.

라라벨 등가물

Laravel에서는 array_keys와 Arr::first 메소드의 조합을 사용하여 비슷한 결과를 얻을 수 있습니다:

use Illuminate\Support\Arr;

$firstProductKey = Arr::first(
    array_keys($products),
    fn (int $key): bool => $products[$key]['barcode'] === 789012,
);

위 코드에서는 먼저 array_keys를 사용하여 $products 배열의 키 배열을 가져옵니다. 그런 다음 Arr::first를 사용하여 콜백과 일치하는 첫 번째 키를 찾습니다. 이는 기본 PHP 함수보다 조금 더 장황하지만 동일한 결과를 얻습니다.

array_any 함수

array_any 함수를 사용하면 배열의 요소 중 하나 이상이 콜백에 정의된 기준과 일치하는지 확인할 수 있습니다. 콜백과 일치하는 요소가 있으면 함수는 true를 반환합니다. 콜백과 일치하는 요소가 없으면 함수는 false를 반환합니다.

$products 예시 배열을 사용하여 노트북 유형이 있는 제품이 있는지 확인해 보겠습니다.

$anyProductsAreLaptops = array_any(
    array: $products,
    callback: fn (array $product): bool => $product['type'] === 'Laptop',
);

이 경우 배열의 제품 중 하나 이상이 노트북이므로 $anyProductsAreLaptops는 true와 같습니다.

콜백과 일치하는 요소가 없으면 함수는 false를 반환합니다. 이에 대한 예를 살펴보겠습니다.

$anyProductsAreInvalid = array_any(
    array: $products,
    callback: fn (array $product): bool => $product['type'] === 'Invalid',
);

이 경우 $anyProductsAreInvalid는 false와 같습니다.

라라벨 등가물

컬렉션에 포함 메소드를 사용하여 Laravel에서 동일한 결과를 얻을 수 있습니다:

use Illuminate\Support\Collection;

$anyProductsAreLaptops = Collection::make($products)->contains(
    fn (array $product): bool => $product['type'] === 'Laptop',
);

위 코드에서는 $products 배열에서 컬렉션을 생성한 다음 포함 메소드를 사용하여 컬렉션에 노트북 제품이 있는지 확인합니다.

array_all 함수

array_all 함수는 array_any 함수와 유사하지만 하나 이상의 요소가 콜백과 일치하는지 확인하는 대신 모든 요소가 콜백과 일치하는지 확인합니다. 모든 요소가 콜백과 일치하면 함수는 true를 반환합니다. 콜백과 일치하지 않는 요소가 있으면 함수는 false를 반환합니다.

$products 배열의 모든 제품이 노트북인지 확인해 보겠습니다.

$allProductsAreLaptops = array_all(
    array: $products,
    callback: fn (array $product): bool => $product['type'] === 'Laptop',
);

이 경우 배열의 모든 제품이 노트북이 아니기 때문에 $allProductsAreLaptops는 false와 같습니다.

라라벨 등가물

Laravel에서는 컬렉션의 Every 메소드를 사용하여 동일한 결과를 얻을 수 있습니다:

use Illuminate\Support\Collection;

$allProductsAreLaptops = Collection::make($products)->every(
    fn (array $product): bool => $product['type'] === 'Laptop',
);

위 코드에서는 $products 배열에서 컬렉션을 생성한 다음 Every 메소드를 사용하여 컬렉션의 모든 제품이 노트북인지 확인합니다.

결론

이 기사에서는 PHP 8.4에서 사용할 수 있는 새로운 배열 함수를 사용하는 방법을 보여줬기를 바랍니다. 또한 Illuminate\Support\Collection 및 Illuminate\Support\Arr 클래스를 사용하여 Laravel에서 유사한 기능을 달성할 수 있는 방법에 대한 아이디어를 제공했을 것입니다.

이 게시물을 재미있게 읽으셨다면 유사한 주제를 더 깊이 있게 다루는 220페이지 분량의 제 전자책 "Battle Ready Laravel"을 확인해 보시는 것도 좋습니다.

또는 Laravel을 사용하여 다른 서비스에서 API를 사용하는 방법을 알려주는 440페이지짜리 전자책 "Laravel에서 API 사용"을 확인해 보세요.

제가 새 게시물을 게시할 때마다 최신 소식을 받고 싶으시면 언제든지 제 뉴스레터에 가입하세요.

계속해서 멋진 것들을 만들어 보세요! ?

릴리스 선언문 이 글은 https://dev.to/ashallendesign/new-array-functions-in-php-84-nbl?1에서 복제됩니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3