【问题标题】:How to apply a function with multiple arguments to every element of an array in PHP?如何将具有多个参数的函数应用于 PHP 中数组的每个元素?
【发布时间】:2016-09-20 18:50:21
【问题描述】:

我有一个方法MyClass#foo(array $array, $argX, $argY, $argZ) 并想将它应用到$myArray 的每个元素。

我已经用array_map(...)array_walk(...) 尝试过这个,但是对于具有自定义签名的函数来说,它们不够灵活。

如何在 PHP 中对数组的每个元素应用具有多个参数的方法(不使用循环进行 for 迭代)?

【问题讨论】:

    标签: php arrays array-map array-walk


    【解决方案1】:

    您可以使用anonymous function(可能与use 关键字结合使用以访问$arg* 变量):

    array_map(function($item) use ($argX, $argY, $argZ) {
        return MyClass::foo($item, $argX, $argY, $argZ);
    }, $your_array_here);
    

    【讨论】:

      【解决方案2】:

      如果您运行的是 PHP 5.3+,那么您可以将匿名函数(或闭包)作为回调参数传递给 array_map

      $newArray = array_map(function($val){
          // Whatever code you want using `$val`.
          // Make sure to `return` a value, though.
      }, $myArray);
      

      如果你想在匿名函数中使用其他变量,那么你可以使用use关键字来捕获它们。

      $newArray = array_map(function($val) use($argX, $argY, $argZ){
          // Whatever code you want using `$val`,
          // and also `$argX`, `$argY`, `$argZ`.
          // Make sure to `return` a value, though.
      }, $myArray);
      

      文档:http://php.net/manual/en/functions.anonymous.php

      【讨论】:

        猜你喜欢
        • 2021-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-24
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多