PHP 8.4 は 2024 年 11 月にリリースされる予定で、いくつかの便利な新しい配列関数が導入されます:
この記事では、これらの新しい関数と、PHP 8.4 を実行しているプロジェクトでそれらの関数を使用する方法について簡単に説明します。
Laravel 開発者であれば、IlluminateSupportCollection クラスと IlluminateSupportArr クラスに同様の関数がすでに存在していることに気づくかもしれません。しかし、これらの関数が PHP にネイティブであるため、どの PHP プロジェクトでも利用できることが気に入っています。 Laravel 開発者である私の読者のために、PHP 8.4 を待たずに Laravel プロジェクトで同じ機能を実現できるように、これらの新しい関数に相当する Laravel を示します。PHP 8.4 の新しい「プロパティ フック」機能について詳しく説明した私の他の記事もチェックしてみることに興味があるかもしれません。
array_find 関数
簡単な例を見てみましょう。一連の商品があり、バーコード 123456 を持つ商品を見つけたいとします:
リーリー
上記のコードを実行すると、$findProduct は次のようになります:
リーリー
2 番目の引数としてアロー関数を使用することで、これをもう少し整理できます:
リーリー
上記のコードは、前の例と同じ結果を返します。
コールバックに一致する要素がない場合、関数は null を返します。この例を見てみましょう:
リーリー
この場合、$nonExistentProduct は null になります。
Laravel の同等物
リーリー
array_find_key 関数
上記のコードを実行すると、product が配列の 2 番目の要素であるため、$findProduct は 1 になります。
この場合、$nonExistentProduct は null になります。
上記のコードでは、まず array_keys を使用して $products 配列のキーの配列を取得しています。次に、Arr::first を使用して、コールバックに一致する最初のキーを見つけます。これはネイティブ PHP 関数よりも少し冗長ですが、同じ結果が得られます。
この場合、配列内の製品の少なくとも 1 つはラップトップであるため、$anyProductsAreLaptops は true に等しくなります。
この場合、$anyProductsAreInvalid は false になります。
上記のコードでは、$products 配列からコレクションを作成し、contains メソッドを使用してコレクション内の製品がラップトップであるかどうかを確認しています。
array_all 関数は array_any 関数に似ていますが、少なくとも 1 つの要素がコールバックに一致するかどうかをチェックするのではなく、すべての要素がコールバックに一致するかどうかをチェックします。すべての要素がコールバックに一致する場合、関数は true を返します。コールバックに一致しない要素がある場合、関数は false を返します。
リーリー
この場合、配列内のすべての製品がラップトップであるわけではないため、$allProductsAreLaptops は false になります。In Laravel, we can achieve the same result using the every method on a collection:
use Illuminate\Support\Collection; $allProductsAreLaptops = Collection::make($products)->every( fn (array $product): bool => $product['type'] === 'Laptop', );
In the code above, we're creating a collection from the $products array and then using the every method to check if all the products in the collection are laptops.
Hopefully, this article has shown you how you can use the new array functions that will be available in PHP 8.4. It should have also given you an idea of how you can achieve similar functionality in Laravel using the Illuminate\Support\Collection and Illuminate\Support\Arr classes.
If you enjoyed reading this post, you might be interested in checking out my 220+ page ebook "Battle Ready Laravel" which covers similar topics in more depth.
Or, you might want to check out my other 440+ page ebook "Consuming APIs in Laravel" which teaches you how to use Laravel to consume APIs from other services.
If you're interested in getting updated each time I publish a new post, feel free to sign up for my newsletter.
Keep on building awesome stuff! ?
以上がPHP の新しい配列関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。