【问题标题】:PHP passing model as a function argumentPHP将模型作为函数参数传递
【发布时间】:2014-01-18 03:01:56
【问题描述】:

我正在使用 Laravel 框架,我有 MyModel

namespace App\Models;

use Illuminate\Support\Facades\DB;

class MyModel extends \Eloquent {
//Some stuff goes here
}

我已经制作了这个函数来对数组的数据进行分组。 效果很好。

public static function GroupBy($array, $key){  
        $grouped = array();
        foreach($array as $arr){
            if(!array_key_exists($arr->MyModel['id'], $grouped)){$grouped[$arr->MyModel['id']] = array();}
            array_push($grouped[$arr->MyModel['id']], $arr[$key]);
        }
        return $grouped;     
    }

现在我希望通过传递我的分组模型来使这个函数更通用。换句话说,我希望能够将MyModel['id'] 作为另一个参数传递。 类似:

$by = "MyModel['id']";

public static function GroupBy($by, $array, $key){  
            $grouped = array();
            foreach($array as $arr){
                if(!array_key_exists($arr->$by, $grouped)){$grouped[$arr->$by] = array();}
                array_push($grouped[$arr->$by], $arr[$key]);
            }
            return $grouped;     
        }

最后一个解决方案不起作用。它返回给我一个包含所有id 的数组。

【问题讨论】:

    标签: php laravel arguments laravel-4


    【解决方案1】:

    试试

    $arr->{$by}
    

    而不是

    $arr->$by
    

    查看更多信息here

    【讨论】:

    • 我刚试了一下,不管有没有{ },结果都是一样的
    • 我不确定,但试试 $by = MyModel['id'];没有引号。 MYModel['id'] 持有什么?
    • 我试过不带引号,但它给我一个语法错误。 $arrMyModel 之间有关系:$arr->belongsto('MyModel'). So I'm accessing MyModel` 然后寻找这个对象的id 键。
    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2019-11-23
    • 2011-05-11
    • 2018-01-04
    • 1970-01-01
    相关资源
    最近更新 更多