V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JingNi
V2EX  ›  PHP

一个关于 foreach 的很奇怪的问题。

  •  
  •   JingNi · 2019-09-26 13:31:25 +08:00 · 4691 次点击
    这是一个创建于 1886 天前的主题,其中的信息可能已经有所发展或是发生改变。
    $a=[1,3,5,6,7,8,12,13];
    foreach ($a as $a_id) { //对数组中的每一位成员进行查询
    $price=DB::table('market_hour')->where('$a_id', $id)->orderBy('day_time', 'desc')->first();
    echo $price->day_time; //day_time 为数据库中某个字段
    }

    输出错误:Trying to get property 'day_time' of non-object
    于是我把:echo $price->day_time;
    改为:echo $price->asdfasdf; //一个不存在的数据库表
    报错:Undefined property: stdClass::$asdfasdf


    接着我把 foreach 注释掉,并直接在段首定义$a_id=1;
    执行成功,返回正常。
    这是为啥,两种方法中的$a_id 不都一样的吗$a 也是整数数组呀
    6 条回复    2019-09-27 08:24:59 +08:00
    Dogergo
        1
    Dogergo  
       2019-09-26 13:46:31 +08:00   ❤️ 1
    1.这个和 foreach 一毛钱关系都没有。

    2.为什么要循环查询!!!每次看到再循环里查询的都想捶死!!!

    3.单引号不解释变量,你的'$a_id'是个啥?

    4.Trying to get property 'day_time' of non-object 为什么不打印一下$price 看看呢?
    yuann72
        2
    yuann72  
       2019-09-26 13:53:45 +08:00   ❤️ 1
    很简单的问题
    Trying to get property 'day_time' of non-object
    foreach 某个 id 的 sql 执行结果为 null,所以$price===null,所以报错


    Undefined property: stdClass::$asdfasdf
    就是单纯不存在这个属性
    zhuzhibin
        3
    zhuzhibin  
       2019-09-26 14:05:02 +08:00 via iPhone
    不要循环查库 宁可一次查出来 然后再拼装数据
    techone
        4
    techone  
       2019-09-26 14:09:32 +08:00
    $id 是什么,
    根据 id 批量查询,用 `in`
    ```php
    DB::table('market_hour')->whereIn('id', $a)->orderBy('day_time', 'desc')->get();
    ```
    JingNi
        5
    JingNi  
    OP
       2019-09-26 14:24:42 +08:00
    @techone
    回复楼上:老哥,不好意思
    原句是:$price=DB::table('market_hour')->where('currency_id', $currency_id)->orderBy('day_time', 'desc')->first();
    $id 是我写问题的时候为了隐藏变量重写的,写错地方了,正如你所纠正的一样,意思就是这样。

    谢谢大家,果然是数组中某个成员中的查询结果为空,导致某个流程发生错误,问题已经解决。qwq
    cbasil
        6
    cbasil  
       2019-09-27 08:24:59 +08:00
    循环查询数据库,不怕被老大跟产品锤死。。。先循环出 id 集合,用 whereIn ()查询岂不是快很多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2909 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:50 · PVG 22:50 · LAX 06:50 · JFK 09:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.