从循环中回显PHP数组

时间:2013-09-24 13:11:20

标签: php arrays

我试图从循环中回显数组,但它似乎没有用。

代码,将值放在数组中:

      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 ) ) 

3 个答案:

答案 0 :(得分:5)

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

if(!empty($lan['error']))
    echo $lan['error'];
else{
    foreach($lan as $l){
        echo $l['lang_id'];
    }
}

答案 1 :(得分: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;

希望这会有所帮助。

答案 2 :(得分:0)

Lang_id是一个嵌套在另一个数组的第一项中的数组,所以它应该是

echo $lan[0]['lang_id']