2014-12-02 94 views
1

我需要編寫一些循環遍歷整個表的數據庫的代碼,所以首先我需要獲取所有表的列表並將它們添加到數組中。將mysql數據庫表名添加到php數組中

我試圖做到這一點使用此代碼:

include('./db.php'); 

$dataList = array(); 
$showTable = "SHOW TABLES from databaseA"; 
$getData = mysqli_query($con, $showTable); 
while ($row = mysqli_fetch_row($getData)) { 
    $dataList[] = $row; 
    print_r($row); 
    } 

我的結果顯示爲:

Array 
(
    [0] => Array 
     (
      [0] => Dave 
     ) 
[1] => Array 
    (
     [0] => Bob 
    ) 

[2] => Array 
    (
     [0] => Chris 
    ) 

[3] => Array 
    (
     [0] => Matt 
    ) 
} 

,但如果我使用echo $dataList[0];echo $dataList[1];我只是通過自己獲得了這個詞array

我不知道我在做什麼錯在這裏...

那麼我就需要建立循環利用這一個PHP和我最初的想法是做這樣的事情:

for ($i=0; $i <= count($dataList); $i++) {} 

但不工作,因爲我錯誤地定義數組....

+0

您正在構建數組的陣列@Marc說。爲了達到這個目的,當獲取值時,你可以在內部數組上工作。看看[foreach](http://php.net/manual/en/control-structures.foreach.php) – MadsBjaerge 2014-12-02 21:37:53

回答

4

你構建一個陣列的陣列:

$data[] = $row; 
      ^---array 
    ^---push onto another array 

你需要

$data[0][0] -> Dave 
$data[1][0] -> Chris 
etc... 

一個var_dump($data)就已經展示了這一點。在字符串上下文中返回一個數組會給你單詞Array - PHP不會爲你編寫數組。

+0

這太棒了!謝謝你解釋double數組。如何用這個double數組構建一個for語句?我已經嘗試了'for $($ i = 0; $ i = count($ dataList); $ i ++){}'但它只是掛起... – 2014-12-02 21:47:56

+0

'foreach($ data as $ subarray){echo $ subarray [0 ]}' – 2014-12-02 21:56:37

0

如果回聲字array那麼這意味着它是一個數組。

嘗試

print_r($dataList); 

這將可能是一個數組的數組。

1

移動以外的While聲明print_r並打印$datalist而不是$行

include('./db.php'); 

$dataList = array(); 
$showTable = "SHOW TABLES from databaseA"; 
$getData = mysqli_query($con, $showTable); 
while ($row = mysqli_fetch_row($getData)) { 
    $dataList[] = $row; 
} 

print_r($dataList); 
1

@Marc B是正確的。但我想表現出一些其他的方式(可能是,詭計):

$dataList = array_reduce($dataList, 'array_merge', array()); 
foreach($dataList as $name){ 
     echo $name; 
} 
// Dave 
// Bob 
// Below 

在上面的代碼 - 「展開二維數組中的第一級數組」。

+0

這太棒了!我還不能讓你讚不絕口,但我真的很欣賞這種迴應。把它分解成單個數組對我來說真的很有幫助。謝謝!! – 2014-12-03 18:53:36