欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

laravel - php,为什么要使用对象?不能用数组代替吗

程序员文章站 2022-04-13 17:57:00
...
就像是 laravel orm不也是能通过使用查询构造器完成的吗?

回复内容:

就像是 laravel orm不也是能通过使用查询构造器完成的吗?

PHP用数组保存SQL查询的结果集不很正常么?怎么会说不能用数组呢?
PDO fetchAll返回的本来就是一个数组:
$db->query('SELECT * FROM posts')->fetchAll(PDO::FETCH_ASSOC);
PHP数组操作很灵活,可以干很多事,甚至是SQL里面的事,比如排序和分组:

 array(
        '金牌' => 8,
        '银牌' => 3,
        '铜牌' => 6,
    ),
    '俄罗斯' => array(
        '金牌' => 3,
        '银牌' => 6,
        '铜牌' => 3,
    ),
    '美国' => array(
        '金牌' => 6,
        '银牌' => 8,
        '铜牌' => 8,
    ),
    '澳大利亚' => array(
        '金牌' => 4,
        '银牌' => 0,
        '铜牌' => 4,
    ),
    '意大利' => array(
        '金牌' => 3,
        '银牌' => 4,
        '铜牌' => 2,
    ),

);

// 实现 ORDER BY
foreach($arr as $k => $v) {
    $sort['金牌'][$k] = $v['金牌'];
    $sort['银牌'][$k] = $v['银牌'];
    $sort['铜牌'][$k] = $v['铜牌'];
}
array_multisort(
    $sort['金牌'], SORT_DESC, 
    $sort['银牌'], SORT_DESC, 
    $sort['铜牌'], SORT_DESC, 
    $arr);
var_export($arr);

// 实现 GROUP BY (看看'金牌'字段都有哪些值)
$tmp = array();
foreach($arr as $k => $v) {
    if(in_array($v['金牌'], $tmp) === FALSE) {
        $tmp[] = $v['金牌'];
    }
}
var_export($tmp);