Я не могу получить какой-либо вывод из моего многомерного массива. Я пытаюсь получить мои данные с помощью метода push_array.
Я хотел бы получить свой результат как:
Однако я не получаю никакой информации. Я знаю, что массив работает, хотя я получаю следующий вывод, когда я эхо-сообщение $ message и не использую $ id и $ name в моем массиве foreach вывода.
Текущий выход: (при эхо-сигнале $ message)
Но ничего не отображается, когда я использую $ 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"}}
Однако по какой-то причине я не уверен в своем выходе, теперь это:
Проблема заключается в том, как вы используете 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'];