Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      Sunshine And March Vibes (2025 Wallpapers Edition)

      May 16, 2025

      The Case For Minimal WordPress Setups: A Contrarian View On Theme Frameworks

      May 16, 2025

      How To Fix Largest Contentful Paint Issues With Subpart Analysis

      May 16, 2025

      How To Prevent WordPress SQL Injection Attacks

      May 16, 2025

      Microsoft has closed its “Experience Center” store in Sydney, Australia — as it ramps up a continued digital growth campaign

      May 16, 2025

      Bing Search APIs to be “decommissioned completely” as Microsoft urges developers to use its Azure agentic AI alternative

      May 16, 2025

      Microsoft might kill the Surface Laptop Studio as production is quietly halted

      May 16, 2025

      Minecraft licensing robbed us of this controversial NFL schedule release video

      May 16, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      The power of generators

      May 16, 2025
      Recent

      The power of generators

      May 16, 2025

      Simplify Factory Associations with Laravel’s UseFactory Attribute

      May 16, 2025

      This Week in Laravel: React Native, PhpStorm Junie, and more

      May 16, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      Microsoft has closed its “Experience Center” store in Sydney, Australia — as it ramps up a continued digital growth campaign

      May 16, 2025
      Recent

      Microsoft has closed its “Experience Center” store in Sydney, Australia — as it ramps up a continued digital growth campaign

      May 16, 2025

      Bing Search APIs to be “decommissioned completely” as Microsoft urges developers to use its Azure agentic AI alternative

      May 16, 2025

      Microsoft might kill the Surface Laptop Studio as production is quietly halted

      May 16, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»Development»New Proposed Array Find Functions in PHP 8.4

    New Proposed Array Find Functions in PHP 8.4

    May 21, 2024

    Four new array functions are likely coming to PHP 8.4 that are still in the RFC voting stage. We’re encouraged that the voting is already 100% “yes” votes thus far, with voting ending May 29, 2024. While the RFC acceptance of these functions is pending, it seems likely that these functions are coming to PHP 8.4:

    array_find()

    array_find_key()

    array_any()

    array_all()

    The array_find() Function

    The array_find($array, $callback) function returns the first element for which the $callback returns true:

    $array = [
    ‘a’ => ‘dog’,
    ‘b’ => ‘cat’,
    ‘c’ => ‘cow’,
    ‘d’ => ‘duck’,
    ‘e’ => ‘goose’,
    ‘f’ => ‘elephant’
    ];

    array_find($array, function (string $value) {
    return strlen($value) > 4;
    }); // string(5) “goose”

    array_find($array, function (string $value) {
    return str_starts_with($value, ‘f’);
    }); // null

    // Find the first animal where the array key is the first symbol of the animal.
    array_find($array, function (string $value, $key) {
    return $value[0] === $key;
    });

    Using Laravel’s Arr or Collection you can get equivalent functionality with the first() method in combination with a closure:

    use IlluminateSupportArr;
    use IlluminateSupportCollection;

    $array = [
    ‘a’ => ‘dog’,
    ‘b’ => ‘cat’,
    ‘c’ => ‘cow’,
    ‘d’ => ‘duck’,
    ‘e’ => ‘goose’,
    ‘f’ => ‘elephant’
    ];

    new Collection($array)
    ->first(fn ($value) => strlen($value) > 4); // goose

    Arr::first(
    $array,
    fn ($value) => str_starts_with($value, ‘f’)
    ); // null

    new Collection($array)
    ->first(fn ($value, $key) => $value[0] === $key); // cow

    Note that we are demonstrating class instantiation without extra parenthesis, which should also be in PHP 8.4.

    The array_find_key() Function

    The array_find_key($array, $callback) function returns the key of the first element for which the $callback returns true. Like array_find(), it returns null if no matching element is found:

    $array = [
    ‘a’ => ‘dog’,
    ‘b’ => ‘cat’,
    ‘c’ => ‘cow’,
    ‘d’ => ‘duck’,
    ‘e’ => ‘goose’,
    ‘f’ => ‘elephant’
    ];

    array_find_key($array, function (string $value) {
    return strlen($value) > 4;
    }); // string(1) “e”

    array_find_key($array, function (string $value) {
    return str_starts_with($value, ‘f’);
    }); // null

    array_find_key($array, function (string $value, $key) {
    return $value[0] === $key;
    }); // string(1) “c”

    The RFC implementation for this function looks like the following:

    function array_find_key(array $array, callable $callback): mixed {
    foreach ($array as $key => $value) {
    if ($callback($value, $key)) {
    return $key;
    }
    }
     
    return null;
    }

    Using Laravel’s Collection, you can get functionality similar to the search() method in combination with a closure. However, search() returns false if the item is not found, not null:

    use IlluminateSupportArr;
    use IlluminateSupportCollection;

    new Collection($array)->search(function (string $value) {
    return strlen($value) > 4;
    }); // string(1) “e”

    new Collection($array)->search(function (string $value) {
    return str_starts_with($value, ‘f’);
    }); // false

    new Collection($array)->search(function (string $value, $key) {
    return $value[0] === $key;
    }); // string(1) “c”

    The array_any() and array_all() Functions

    The second part of the RFC (and a separate 2/3 vote) includes the array_any() and array_all() functions. You can use these functions if any of the items in array return true for array_any() and if all of the items in an array return true for array_all(), respectively.

    $array = [
    ‘a’ => ‘dog’,
    ‘b’ => ‘cat’,
    ‘c’ => ‘cow’,
    ‘d’ => ‘duck’,
    ‘e’ => ‘goose’,
    ‘f’ => ‘elephant’
    ];

    // Check, if any animal name is longer than 5 letters.
    array_any($array, function (string $value) {
    return strlen($value) > 5;
    }); // bool(true)

    // Check, if any animal name is shorter than 3 letters.
    array_any($array, function (string $value) {
    return strlen($value) < 3;
    }); // bool(false)

    // Check, if all animal names are shorter than 12 letters.
    array_all($array, function (string $value) {
    return strlen($value) < 12;
    }); // bool(true)
     
    // Check, if all animal names are longer than 5 letters.
    array_all($array, function (string $value) {
    return strlen($value) > 5;
    }); // bool(false)

    Learn More

    You can read all the details about this proposed change in the RFC. This feature likely drops in PHP 8.4. The implementation for these functions is currently in draft and can be found on GitHub.

    The post New Proposed Array Find Functions in PHP 8.4 appeared first on Laravel News.

    Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.

    Source: Read More 

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleStreamline Two-Way Binding with defineModel
    Next Article Leading a Clinical Data Collaboration Revolution: A Success Story

    Related Posts

    Security

    Nmap 7.96 Launches with Lightning-Fast DNS and 612 Scripts

    May 16, 2025
    Common Vulnerabilities and Exposures (CVEs)

    CVE-2025-47916 – Invision Community Themeeditor Remote Code Execution

    May 16, 2025
    Leave A Reply Cancel Reply

    Continue Reading

    Building an Interactive Weather Data Scraper in Google Colab: A Code Guide to Extract, Display, and Download Live Forecast Data Using Python, BeautifulSoup, Requests, Pandas, and Ipywidgets

    Machine Learning

    How to Get Your First SaaS Customers

    Development

    What we can learn from the crowdstrike outage

    Development

    Representative Line: Tern on the Flames

    Development

    Highlights

    Nveil: Offline Marketing Strategies

    February 7, 2025

    Post Content Source: Read More 

    CVE-2025-4172 – VerticalResponse WordPress Newsletter Widget Stored Cross-Site Scripting Vulnerability

    May 3, 2025

    Enhancing Laravel Authorization with Backed Enums

    March 17, 2025

    Chinese Threat Actors Employ Operational Relay Box (ORB) Networks to Evade IOCs

    May 23, 2024
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.