【问题标题】:2 warnings: Cannot use a scalar value as an array and Illegal offset type in isset or empty2 个警告:不能将标量值用作数组和 isset 中的非法偏移类型或空
【发布时间】:2018-06-27 04:42:39
【问题描述】:

这是我写的代码:

class init{
 private $time_spent;
 public function __construct(){
  $this->time_spent = array(); //<- caching variable
 }
 function get_course_unit_time_spent( $user_id,$course_id,$unit_id ){

    if(empty($this->time_spent) || empty($this->time_spent[$course_id]) || empty($this->time_spent[$course_id][$unit_id])){

        $this->time_spent[$course_id][$unit_id] = get_user_meta($user_id,'time_spent_'.$course_id.'_'.$unit_id,true);
        if( empty($this->time_spent[$course_id][$unit_id]) ){
            $this->time_spent[$course_id][$unit_id] = 0;
        }
    }

    return $this->time_spent[$course_id][$unit_id];

 }

 function get_course_time_spent( $user_id,$course_id ){

    if( empty($this->time_spent[$course_id]) ){
        if(!bp_course_is_member($course_id,$user_id))
            return 0;

        $time_spent = 0;
        $this->time_spent[$course_id] = array();
        $course_curriculum = bp_course_get_curriculum( $course_id );
        foreach ($course_curriculum as $key => $unit_id) {
            if( is_numeric($unit_id) ){
                $time_spent += $this->get_course_unit_time_spent( $user_id,$course_id,$unit_id );
            }
        }
        $this->time_spent[$course_id] = $time_spent;
    }

    return $this->time_spent[$course_id];

 }
}

有很多代码,但问题在于我在上面编写的第一个函数,在两个不同的地方我得到了上面的警告。

1) 警告:不能在第 10 行和第 12 行(在上面的代码中)使用标量值作为数组。

2) 警告:isset 中的偏移类型非法或第 8 行为空(在上面的代码中)。

3) 警告:第 10、11 和 12 行(在上面的代码中)存在非法偏移类型。

第二个函数没有抛出任何错误,但每当我使用第一个函数或第二个函数时,警告来自第一个函数。我不确定它是什么,有人可以帮助纠正它吗?

更新:更新了代码,现在第一个警告消失了,但仍然出现非法偏移错误。

【问题讨论】:

    标签: php arrays wordpress


    【解决方案1】:
    1. 您调用get_course_time_spent(),它为 $this-&gt;time_spent[$course_id][$unit_id]get_course_unit_time_spent()
    2. 然后在 foreach 循环完成后将 $this-&gt;time_spent[$course_id] 设置为 int。
    3. 然后在下一次致电get_course_unit_time_spent 时进行检查 好像它是一个数组empty($this-&gt;time_spent[$course_id][$unit_id])

    【讨论】:

    • 谢谢,帮了大忙
    • 它修复了第一个警告,但我仍然收到其他非法偏移类型的警告。
    • 您能否在上面的代码中突出显示错误发生的位置,并使用您现在使用的代码对其进行更新。
    • 非法偏移类型警告同前同行
    • 你能告诉我你的代码有什么不同吗:3v4l.org/Ppcif 因为我没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多