2013-08-28 7 views
2

Я разрабатываю приложение, использующее php и dropbox api, и пытаюсь перебрать многомерный массив и вывести его в таблицу. Это мой код до сих пор:Петля через многомерный массив

<?php 
session_start(); 

# Include the Dropbox SDK libraries 
require_once "Dropbox/autoload.php"; 
use \Dropbox as dbx; 

// Create connection 
$con = mysqli_connect(
    "localhost", "sintegra_aggre", "*******", "sintegra_aggregator" 
); 

// Check connection 
if (mysqli_connect_errno($con)) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

if (isset($_SESSION['uid'])) { 
    $password = $_SESSION['pass']; 
    $username = $_SESSION['user']; 
    $email = mysqli_query($con, " 
     SELECT * 
     FROM main_users 
     WHERE 
      password='$password' 
      AND username='$username' 
    "); 

    if ($email >= 1) { 
     // let them stay on page 
    } else { 
     header("Location: logout.php"); 
    } 
} else { 
    header("Location: login.php"); 
} 

$accessToken = $_SESSION['accessToken']; 

$dbxClient = new dbx\Client($accessToken, "PHP-Example/1.0"); 

$folderMetadata = $dbxClient->getMetadataWithChildren("/upload"); 

foreach ($folderMetadata as $value) { 
    echo $value; 
    foreach ($value as $val) { 
     echo $val . "<br />"; 
    } 
    echo "<br /><br />"; 
} 
?> 

и это выход из print_r массива:

Array 
(
    [hash] => d023a1738d460f667d383cb4f57bc769 
    [revision] => 65 
    [rev] => 411389e826 
    [thumb_exists] => 
    [bytes] => 0 
    [modified] => Wed, 28 Aug 2013 20:28:34 +0000 
    [path] => /upload 
    [is_dir] => 1 
    [icon] => folder 
    [root] => app_folder 
    [contents] => Array 
     (
      [0] => Array 
       (
        [revision] => 81 
        [rev] => 511389e826 
        [thumb_exists] => 1 
        [bytes] => 1996564 
        [modified] => Wed, 28 Aug 2013 21:32:10 +0000 
        [client_mtime] => Wed, 28 Aug 2013 21:32:11 +0000 
        [path] => /upload/08-nigellas-chocolate-chip-muffins.jpg 
        [is_dir] => 
        [icon] => page_white_picture 
        [root] => dropbox 
        [mime_type] => image/jpeg 
        [size] => 1.9 MB 
       ) 

      [1] => Array 
       ( 
        [revision] => 79 
        [rev] => 4f1389e826 
        [thumb_exists] => 1 
        [bytes] => 22848 
        [modified] => Wed, 28 Aug 2013 21:14:39 +0000 
        [client_mtime] => Wed, 28 Aug 2013 21:14:39 +0000 
        [path] => /upload/1376243030_guestion.png 
        [is_dir] => 
        [icon] => page_white_picture 
        [root] => dropbox 
        [mime_type] => image/png 
        [size] => 22.3 KB 
       ) 

      [2] => Array 
       (
        [revision] => 80 
        [rev] => 501389e826 
        [thumb_exists] => 
        [bytes] => 54772 
        [modified] => Wed, 28 Aug 2013 21:26:19 +0000 
        [client_mtime] => Wed, 28 Aug 2013 21:26:19 +0000 
        [path] => /upload/BT_screen_quiz.java 
        [is_dir] => 
        [icon] => page_white_cup 
        [root] => dropbox 
        [mime_type] => text/x-java 
        [size] => 53.5 KB 
       ) 

      [3] => Array 
       (
        [revision] => 77 
        [rev] => 4d1389e826 
        [thumb_exists] => 
        [bytes] => 1679 
        [modified] => Wed, 28 Aug 2013 20:59:53 +0000 
        [client_mtime] => Wed, 28 Aug 2013 20:59:53 +0000 
        [path] => /upload/login.php 
        [is_dir] => 
        [icon] => page_white_php 
        [root] => dropbox 
        [mime_type] => text/php 
        [size] => 1.6 KB 
       ) 

      [4] => Array 
       ( 
        [revision] => 78 
        [rev] => 4e1389e826 
        [thumb_exists] => 
        [bytes] => 2037 
        [modified] => Wed, 28 Aug 2013 21:00:56 +0000 
        [client_mtime] => Wed, 28 Aug 2013 21:00:56 +0000 
        [path] => /upload/signup.php 
        [is_dir] => 
        [icon] => page_white_php 
        [root] => dropbox 
        [mime_type] => text/php 
        [size] => 2 KB 
       ) 

     ) 

    [size] => 0 bytes 
) 

Я попытался сочетание различных методов от должностей, таких как:

и ни один из них не работал.

Я надеялся, что кто-то сможет дать мне немного кода, который будет проходить через массив и выводить его в таблицу. Кроме того, только содержимое массива, который необходимо поместить в таблицу

Спасибо заранее, Марк

+0

Как вы ожидали, что ваш стол будет оформлен? Одна таблица для информации о папке, другая следующая за ней с информацией о контенте? – Jason

+0

Привет, я думал, что левый coloumn может иметь заголовки для каждого файла, такие как байты, путь и т. Д. И право на значение. – marcus

+0

также, я только что понял, что забыл упомянуть, что мне не нужна информация о папке (теперь я отредактировал оригинальный пост) – marcus

ответ

1

Немного инлайн и блок PHP будет делать основы. Остальная часть форматирования зависит от вас; D

Все данные foreach сделаны со значениями в качестве ссылок, чтобы ускорить процесс.

Пересмотренный Ответ

на основе новой информации, так как вы хотите, выкладывается с заголовками в верхней части вы хотели бы попробовать что-то вроде этого:

<?php $headings = array_keys($array['contents'][0]); ?> 

<table> 
    <tr> 
     <?php foreach($headings as &$heading): ?> 
      <th><?php echo $heading; ?></th> 
     <?php endforeach; ?> 
    </tr> 
    <?php foreach($array['contents'] as &$file): ?> 
     <tr> 
      <?php foreach($file as &$data): ?> 
       <td><?php echo $data; ?></td> 
      <?php endforeach; ?> 
     </tr> 
    <?php endforeach; ?> 
</table> 

Первая линия захватывает array_keys как заголовки, выводит строки заголовков, а затем проходит через строки данных непосредственно из массива по ссылке.

Предыдущая Revision

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

<?php 
    $output = array(); 

    foreach($test['contents'] as &$file) 
    { 
     foreach($file as $heading => &$value) 
     { 
      $output[$heading][] = $value; 
     } 
    } 
?> 

<table> 
    <?php foreach($output as $heading => &$data): ?> 
     <tr> 
      <th><?php echo $heading; ?></th> 
      <?php foreach($data as &$value): ?> 
       <td><?php echo $value; ?></td> 
      <?php endforeach; ?> 
     </tr> 
    <?php endforeach; ?> 
</table> 

Из-за способа таблиц раскладывают, вы можете просто использовать немного перетасовки, чтобы получить массив правильно перебирать. Вероятно, есть много тысяч способов написать это.

+0

привет, спасибо за это, и все это прекрасно работает до сих пор, это моя ошибка, но я пытался получить имена файлов слева и заголовки сверху, и я думаю, что это означает, что код нужно менять, чтобы идти слева направо, чтобы идти сверху вниз.Если возможно, пожалуйста, не могли бы вы отредактировать свой ответ, поскольку я не знал бы, как начать заниматься этим. – marcus

+0

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

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