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 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)