2015-10-26 14 views
0

是的,我知道这已被问及数十亿次,但仍然困惑不解。非法字符串偏移量 - 小问题

代码底线:

$this->labels[$row['id']] = $row['content']; 

这怎么能更好的写法,以避免非法在PHP偏移?

试图让PHP手册的意义,而是迷茫..

使用TRUE作为键名将使integer 1成为关键。使用FALSE作为键将评估为整数0作为键。使用NULL作为键将评估为空字符串。使用空字符串作为键将创建(或覆盖)具有空字符串及其值的键,这与使用空括号不同。

您不能将数组或对象用作键。这样做会导致警告:非法偏移类型。

我可以阅读任何好的文章,以便将来纠正这一点?

$sql = "SELECT `l`.`id`, `c`.`content` 
      FROM `{$this->table_2}` `l` 
      LEFT JOIN `{$this->table_3}` `c` 
       ON `c`.`label` = `l`.`id`; 
      WHERE `c`.`language` = ? 
      ORDER BY `l`.`name` ASC"; 
      $labels = $this->Db->getAll($sql, $this->language); 
      if (empty($labels)) { 
       setcookie('lang', 1, time() + 31536000, '/'); 
       $this->language= 1; 
    $sql = "SELECT `l`.`id`, `c`.`content` 
      FROM `{$this->table_2}` `l` 
      LEFT JOIN `{$this->table_3}` `c` 
      ON `c`.`label` = `l`.`id` 
      WHERE `c`.`language` = ? 
      ORDER BY `l`.`name` ASC"; 
      $labels = $this->Db->getAll($sql, $this->lanaguage); 
      } 
      if (!empty($labels)) { 
       foreach($labels as $row) { 
       $this->labels[$row['id']] = $row['content']; 
       } 
     } 
} 

回答

0

您可以使用issetlink)PHP函数如下。

foreach($labels as $row) { 
    if(isset($row['id']) && isset($row['content'])){ 
    $this->labels[$row['id']] = $row['content']; 
    } 
} 
+0

谢谢你堆。我应该接受这一点。工作很好。谢谢 :) –