dsxd62219570 2017-09-26 21:07
浏览 100
已采纳

将函数存储在变量中

I don't understand how this thing works but I need to create a new function and store it in a variable. Then, by using array_filter, remove all dogs that are under certain age. Here is what I created so far:

$animals = [
  [ 'name' => 'Waffles', 'type' => 'dog', 'age'  => 12],
  [ 'name' => 'Fluffy',  'type' => 'cat', 'age'  => 14],
  [ 'name' => 'Spelunky', 'type' => 'dog', 'age'  => 4],
  [ 'name' => 'Hank'      , 'type' => 'dog', 'age'  => 11],
];


$youngDogs = function ($animals, $filter){    
    array_filter(
        $animals, 
        function($animals, $age = 5){
            $arr = [];
            if($animals['type'] == 'dog' && $animals['age'] < $age)
            {
                $arr = [
                    'name' => $animals['name'],
                    'type' => $animals['type'],
                    'age' => $animals['age'],
                ];
            }
            return $arr;
        }
    );
};


var_dump($youngDogs($animals, 5));

My idea is to create a new array and store the dogs that match the criteria and return it, however everything is a mess and the function is returning NULL and I don't know what is happening anymore. Could anyone give me a hint?

  • 写回答

3条回答 默认 最新

  • duan_88598 2017-09-26 21:16
    关注
    • You need use($age) as array_filter passes only one argument to the callback
    • You need to return the result of array_filter from your function
    • array_filter expects true or false to be returned from the callback

    $youngDogs = function ($animals, $age){    
                    return array_filter($animals, 
                        function($animal) use($age){
                            if($animal['type'] == 'dog' && $animal['age'] < $age) {
                                return false;
                            }
                            return true;
                        }
                    );
                 };
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Android STD快速启动
  • ¥15 如何使用simulink建立一个永磁同步直线电机模型?
  • ¥30 天体光谱图的的绘制并得到星表
  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动