2015-07-29 3 views
3

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

Я хотел бы получить мой выход, как:

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

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

Выходной ток: (когда вторя $ сообщение)

Но ничего получает показано, когда я использую $ Id и $ имя как показано здесь.

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

массив (4) {[0] => arr ay (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] => массив (2) {[0] => строка (2) "71" [1] => строка (3) "jav"}}

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

  • d
+0

показать нам свою Результаты для 'var_dump ($ output)' – Ben

+0

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

+0

Я получаю: array (4) {[0] => int (1) [1] => int (2) [2] => int (3) [3] => int (4)} –

ответ

1

Проблема с, как вы используете 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 и $ имя так:

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

Мой вывод все еще не так ожидаемый. (Я обновил свой ответ, чтобы отразить это) m можно получить мой id и имя из массива теперь благодаря вашему предложению, поскольку мой вывод vardump: array (4) {[0] => array (2) {[0] => string (2) "73" [ 1] => строка (2) "qd"} [1] => ar ray (2) {[0] => string (2) "72" [1] => string (3) "jav"} [2] => array (2) {[0] => string (2) " 70 "[1] => строка (4)" da12 "} [3] => массив (2) {[0] => строка (2)" 71 "[1] => строка (3)" jav "} } –

+0

Я обновил ответ - изменил, как массив сохраняется в $ this-> messages [], чтобы вы могли легко получить доступ к полям по именам + добавлена ​​информация о том, как отображать $ id и $ name –

Смежные вопросы