2013-09-24 3 views
-1

Я попытался эхо-массива из цикла, но он, похоже, не работает.Эхо-массив PHP из цикла

код, чтобы поместить значения в массиве:

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

'Эхо $ лан [0] [«»] lang_id' работает? –

+0

'$ rows [] = $ row;' поэтому для доступа к каждой строке вам нужно выполнить '$ lan [0] ['lang_id']' – Bonzo

+0

Что вам нужно, это 'echo $ lan [0] ['lang_id']' – Havelock

ответ

0

Здесь у вас есть двумерный массив для одного языка. Как у вас есть один язык, так что используйте код, как показано ниже:

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

Как вы получаете один результат (если у вас есть одну запись для каждого идентификатора языка, так как это всегда так :)), то нет необходимости делать следующее:

$rows[] = $row; 

Надеюсь, это поможет.

5

Вам нужно перебирать через петлю, чтобы получить внутренние строки/массивы. Ключ error будет существовать только в первом массиве.

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

Lang_id находится в массиве, который вложен в первом элементе другого массива, так что должно быть

echo $lan[0]['lang_id'] 
Смежные вопросы