2013-08-28 143 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作爲標題,打印標題行,然後通過引用直接從數組遍歷數據行。

以前的版本

這是我最後的答案,它會顯示在左側的標題,與在列中顯示的數據表。

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