Codeigniter失败的对象属性命名为'状态'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeigniter失败的对象属性命名为'状态'相关的知识,希望对你有一定的参考价值。

我有一个循环的对象数组,一个公共属性不断导致CodeIgniter的通知错误。从我读到的,“状态”不是php中的保留字。部分对象转储

array (size=1)
  0 => 
    object(stdClass)[15]
      public 'ID' => int 107292435 (length=9)
      public 'RegTypeID' => int 1172891 (length=7)
      public 'StatusID' => int 2 (length=2)
      public 'City' => string 'Philadelphia' (length=7)
      public 'State' => string 'PA' (length=2)
  ...

当我循环每个对象输出时,如下所示

foreach ($attendees as $attendee):
    echo "<tr><td>{$attendee->Title}</td>
";
    echo "<td>{$attendee->Company}</td>
";
    echo "<td>{$attendee->State}</td>
";
    echo "<td>{$attendee->Country}</td></tr>
";
endforeach;

严重性:通知消息:未定义属性:stdClass :: $ State

我尝试使用索引值$attendee->{'4'}输出,但也失败了。我想避免循环并添加另一个属性名称,以便在可能的情况下替换此属性。

添加print_r结果例如:

stdClass Object

    (
        [ID] => 108279742
        [EventID] => 2148055
        [FirstName] => Bob
        [LastName] => Smith
        [Company] => AbbVie
        [Title] => Sample Title
        [State] => IL
        [Country] => United States
    )
答案

你可能在所有记录中都没有State属性。

你可以做的是填写之前或使用if语句检查并输出一些默认信息,如下所示:

echo "<td>". (isset($attendee->State)? $attendee->State : "no info available"). "</td>
"
另一答案

我的环境是php 7.1和codeigniter 3.1.8

我在我的测试控制器中创建了以下函数用于测试目的,并且State输出没有错误消息。

public function func(){

    $attendee=new stdClass;
    $attendee->ID=107292435;
    $attendee->RegTypeID=1172891;
    $attendee->StatusID=2;
    $attendee->Title='Michael Jackson';
    $attendee->Company='Worlds Best Music Stars';
    $attendee->City='Philadelphia';
    $attendee->State='PA';
    $attendee->Country='USA';

    $attendees=array();
    $attendees[]=$attendee;

    foreach ($attendees as $attendee){
        echo "<tr><td>{$attendee->Title}</td>
";
        echo "<td>{$attendee->Company}</td>
";
        echo "<td>{$attendee->State}</td>
";
        echo "<td>{$attendee->Country}</td></tr>
";
    }
}

输出如下:

<tr><td>Michael Jackson</td>
<td>Worlds Best Music Stars</td>
<td>PA</td>
<td>USA</td></tr>

以上是关于Codeigniter失败的对象属性命名为'状态'的主要内容,如果未能解决你的问题,请参考以下文章

如何访问在 php 中命名为变量的对象属性?

如何在 BeautifulSoup ISO 标签中转义父属性实际上命名为 <parent>?

Git 从 index.lock 重命名为 index 失败

没有模块'命名为 tensorflow_core.esitmator'。

加入期间的意外行为(仅在将列 'year' 重命名为 'year' 时才有效)否则将失败并显示“package.TreeNodeException:执行树”

python中copy文件后重命名为后缀是系统时间