多行

2017-07-19 25 views
0

我在PHP運行的SQL查詢並返回結果這樣多行

Name 
Joe 
Jack 
Jerri 
Jerry 

我需要解析此爲PHP數組,不幸的是填充PHP陣列,該方法我已經在過去使用添加到PHP數組不再相關,因爲我返回多行。我將如何改變這種語法,以便考慮與多行填充我的PHP數組的一列?

$rows = $db->loadRowList(); 
$output = array(); 
foreach ($rows as $row) { array_push($output, $row); } 
$data = json_encode($output[0]); 

回答

1

TL; DR:使用loadAssocList('id', 'name')


loadRowList()返回索引數組的從查詢返回

因此,表中的記錄的索引數組,我會認爲$rows陣列看起來像這樣:

Array 
(
    [0] => Array 
     (
      [0] => Joe 
     ) 

    [1] => Array 
     (
      [0] => Jack 
     ) 

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

    [3] => Array 
     (
      [0] => Jerry 
     ) 
) 

您可以使用PHP的array_column()從每一個孩子數組提取單個索引值:

$rows = $db->loadRowList(); 
$output = array_column($rows, 0); 

$output現在應該包含一個數組看起來像:

Array 
(
    [0] => Joe 
    [1] => Jack 
    [2] => Jerri 
    [3] => Jerry 
) 

,我們可以在這裏做的改進是維護一個關聯數組,它將數據庫的列名映射到它們的值。 loadAssocList()可以幫助那裏。

$rows = $db->loadAssocList(); 
$output = array_column($rows, 'name'); 

注意,我們現在使用的"name"指數,而不是0

這甚至可以進一步通過利用loadAssocList()參數改善:

loadAssocList($key, $column)來自名爲「列」通過查詢返回的列返回值的關聯數組,索引的「鑰匙」,

使用這種方法,我們可以在ID => Name接收單個陣列項值格式:

$ouput = $db->loadAssocList('id', 'name');