Невозможно вывести многомерный массив

Я не могу получить какой-либо вывод из моего многомерного массива. Я пытаюсь получить мои данные с помощью метода push_array.

Я хотел бы получить свой результат как:

  • Джон, 1001
  • Том, 1002
  • Джерри, 1003
  • Сара, 1004

Однако я не получаю никакой информации. Я знаю, что массив работает, хотя я получаю следующий вывод, когда я эхо-сообщение $ message и не использую $ id и $ name в моем массиве foreach вывода.

Текущий выход: (при эхо-сигнале $ message)

  • 1
  • 2
  • 3
  • 4

Но ничего не отображается, когда я использую $ id и $ name, как показано здесь.

<ul class="result"><?php foreach ($output as $message) { $id = $message[1][0]; $name = $message[1][1]; ?><li> <a href="handleDownload.php?id=<?php echo $id;?>"><?php echo $name; ?> </a> </li><php } ?> </ul> 

Вот мой полный код:

 <?php $Download = new Download(); $result = array(); //store results of upload try { $Download->showDBFiles(); $output = $Download->getMessages(); } catch (Exception $e) { $result[] = $e->getMessage(); } ?> <h2>Output</h2> <?php if ($output) { ?> <ul class="result"> <?php foreach ($output as $message) { $id = $message[1][0]; $name = $message[1][1]; ?> <li><a href="handleDownload.php?id=<?php echo $id;?>"><?php echo $name; ?></a></li> <?php } ?> </ul> <?php } ?> 

Функция, в которой определены массивы

 protected $messages = array(); public function showDBFiles() { global $database; $values=array(); $sql = "SELECT resume_id, resume_title FROM ".self::$table_name; $result = $database->query($sql); if(mysqli_num_rows($result)==0){ $this->messages[] = "Database is empty"; }else{ while(list($id, $name) = mysqli_fetch_array($result)){ array_push($this->messages, array($id, $name)); } } } public function getMessages() { return $this->messages; } 

UPDATE: после использования предложения jedrzej.kurylo я могу иметь значения $ id и $ name, как показано в моем выводе var_dump:

array (4) {[0] => array (2) {[0] => string (2) "73" [1] => string (2) "qd"} [1] => array (2) { [0] => string (2) "72" [1] => string (3) "jav"} [2] => array (2) {[0] => string (2) "70" [1] => string (4) "da12"} [3] => array (2) {[0] => string (2) "71" [1] => string (3) "jav"}}

Однако по какой-то причине я не уверен в своем выходе, теперь это:

  • d

Проблема заключается в том, как вы используете array_push здесь:

 $this->messages[] = array_push($values, array($id, $name)); 

array_push не возвращает обновленный массив, а новое количество элементов в массиве – см. http://php.net/manual/en/function.array-push.php . Вот почему вы получаете целые числа в своем выпуске.

Вместо этого выполните следующее:

 while(list($id, $name) = mysqli_fetch_array($result)){ array_push($this->messages, array($id, $name)); } 

или просто

 while(list($id, $name) = mysqli_fetch_array($result)){ $this->messages[] = array('id'=>$id, 'name'=>$name); } 

Затем вы можете получить доступ к $ id и $ name следующим образом:

 $id = $message['id']; $name = $message['name'];