2010-08-17 2 views
2

Я пытаюсь создать функцию, которая извлекает информацию из базы данных и вставляет ее в ассоциативный массив в PHP, используя mysql_fetch_assoc, и возвращает массив, чтобы другая функция отображала его. Мне нужен способ отображения возвращаемого массива. Это должно быть другая функция от первогоОтображение ассоциативного массива в PHP

+4

Вы будете нуждаться, чтобы быть более конкретной информацией о том, как хочет, чтобы отобразить результаты; технически 'vardump ($ array);' отвечает на ваш вопрос –

+2

Просьба прокомментировать или обновить исходный вопрос, чтобы уточнить его, а не создавать новый вопрос. –

ответ

0

Предполагая, что вы сделали вызов, и получил $ результата обратно:

$array = new array(); 
while($row = mysql_fetch_assoc($result)){ 
    $array[] = $row; 
} 
return $array; 
+0

, который отлично поработал :) спасибо alot , но когда я пытаюсь отобразить результат в другой функции, он показывает мне 1 - Array 2- Array вместо этого, если информация в массиве – Mohamed

+0

хорошо, я понял, что большое вам спасибо Помогите – Mohamed

0

Это должно заставить вас идти:

$rows = mysql_query("select * from whatever"); 
if ($rows) { 
    while ($record = mysql_fetch_array($rows)) { 
     echo $record["column1"]; 
     echo $record["column2"]; 
     // or you could just var_dump($record); to see what came back... 
    } 
} 
2

print_r($array) придаст красиво отформатирована (текстуально, а не HTML) вывода.

+2

var_dump() - лучшая альтернатива, поскольку print_r() может лежать иногда, если вы это сделаете. – Chris

+0

или

для лучшего форматирования – ford

0

должно работать:

$rows = mysql_query("select * from whatever"); 
if ($rows) { 
    $header = true; 
    while ($record = mysql_fetch_assoc($rows)) { 
     if ($header) { 
      echo '<tr>'; 
      foreach (array_keys($record) AS $col) { 
       echo '<td>'.htmlspecialchars($col).'</td>'; 
      } 
      echo '</tr>'; 
      $header = false; 
     } 
     echo '<tr>'; 
     foreach (array_values($record) AS $col) { 
      echo '<td>'.htmlspecialchars($col).'</td>'; 
     } 
     echo '</tr>'; 
    } 
} 

(Да, наглая мод кода FOSCO в)

Это должно напечатать заголовки столбцов один раз, затем содержимое после этого. Это будет печатать только те столбцы, которые были извлечены из БД, независимо от запроса.

+0

Я чувствую, что должна быть лучшая альтернатива if ($ header), которую цикл while должен вычислять каждую итерацию. – Chris

+0

@Chris Вы можете сделать это, не проверяя каждый раз. Возьмите строку из БД, проверьте, есть ли у вас ее, распечатайте заголовки, а затем сделайте ... в то время как цикл над ним. Однако этот способ проще реализовать и прочитать, а проверка - O (1), и в этом случае вычисляет 1/(4+ (n * 4)) вычислений на строку, результат пренебрежимо мал. – Tarka

2

Если вы хотите получить информацию о том, что находится в массиве (для целей отладки), вы можете использовать print_r($array) или var_dump($array) или var_export($array) для печати в формате массива PHP.

Если вы хотите хорошо форматированный вывод, вы можете захотеть сделать что-то вроде:

<table border="1"> 
    <?php 
    foreach($array as $name => $value) { 
    echo "<tr><th>".htmlspecialchars($name). 
     "</th><td>".htmlspecialchars($value)."</th></tr>"; 
    } 
    ?> 
</table> 

Это будет, как вы могли уже видеть, печатать отформатированную таблицу с именами в левой колонке и значении в правой колонке.

+0

Не забудьте закодировать специальные символы. – Artefacto

1
while ($row = mysql_fetch_assoc($result)) { 
    foreach ($row as $column => $value) { 
     //Column name is in $column, value in $value 
     //do displaying here 
    } 
} 

Если это новая программа, используйте вместо этого расширение mysqli.

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