-1

我试图从循环中回显一个数组,但它似乎不起作用。

代码,将值放入数组中:

      public function get_language() {

        global $db;

        $language = $this->get_visit_loc();
        $rows = array();
        $query = $db->query("SELECT * FROM languages WHERE lang_id = '{$language}'") or die(mysql_error());
        if($db->num_rows($query) > 0) {
            while($row = $db->fetch_array($query)) {
                $rows[] = $row;
            }
        } else {
            $rows['error'] = 'We have some serious Error!';
        }
        return $rows;
    }

如果我调用该函数并尝试回显该数组,它不会返回任何内容。

   $lan = $lang->get_language();

   echo $lan['lang_id']; //returns nothing.

   echo $lan['error']; //Returns an error.

print_r 结果:

    Array ( [0] => Array ( [id] => 1 [lang_id] => EE ) ) 
4

3 回答 3

5

您需要遍历循环以获取内部行/数组。error密钥只存在于第一个数组中。

if(!empty($lan['error']))
    echo $lan['error'];
else{
    foreach($lan as $l){
        echo $l['lang_id'];
    }
}
于 2013-09-24T13:14:16.407 回答
0

Lang_id 位于一个数组中,该数组嵌套在另一个数组的第一项中,因此它应该是

echo $lan[0]['lang_id']
于 2013-09-24T13:17:12.893 回答
0

在这里,您获得了单一语言的二维数组。由于您只有一种语言,因此请使用以下代码:

if($db->num_rows($query) > 0) {
            while($row = $db->fetch_array($query)) {
                return $row;
            }
        } else {
            $rows['error'] = 'We have some serious Error!';
        }

当您获得单个结果时(假设您对每个语言 ID 都有一个记录,因为它总是这样 :)),那么无需执行以下操作

$rows[] = $row;

希望这会有所帮助。

于 2013-09-24T13:17:01.920 回答