2013-05-22 97 views
0

在PHP是有,使該行(其來自DB)行到嵌套陣列

源陣列結構的任何功能:

[1]=>array(
    ["TYPE"] => 'FRUIT' 
    ["VALUE"] => 'BANANA' 
) 
[2]=>array(
    ["TYPE"] => 'FRUIT' 
    ["VALUE"] => 'ORANGE' 
) 

數據樣本

fruit|apple 
fruit|orange 
fruit|strawberry 

animal|rabbit 
animal|buffalo 
animal|ant 

goods|scissor 
goods|cutter 

容易成爲嵌套array:

array(
fruit => array('apple', 'orange', 'strawberry'), 
animal => array('rabbit', 'buffalo', 'ant'), 
goods => array('cutter', 'scissors'), 
) 

基於它的類型相似性。

+0

,您在數據庫中獲取這一行。表 – Afsar

+0

@贊,是的。 –

+0

它只是兩個級別還是兩個級別以上? –

回答

0

在PHP是有,使該行

都能跟得上的任何功能,也沒有現成的功能這一點。
你必須編寫一個程序來解析你的字符串並將它們放入數組中

或者你必須改變你的輸入源格式。例如,對於JSON,因爲它可以使用您要求的單個函數進行分析。

如果你將這些行以這種方式存儲在數據庫中,則必須將其更改爲更合理的結構,存儲類別除外的項目。

通常,您必須從用於從數據庫獲取數據的循環中獲取您的組。

例如,PDO has some [silly] magic for you:

<?php 

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 
$sth->execute(); 

/* Group values by the first column */ 
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)); 
?> 

哪些呢你問的非常工作。
然而,這是很容易模仿與任何其他API

0

嘗試這樣的事情例如這種行爲,

  <?php 
     $result=array(); 
     $data = array(array("TYPE"=> 'FRUIT',"VALUE"=> 'BANANA'),array("TYPE" => 'FRUIT',"VALUE"=> 'ORANGE')); 
     foreach($data as $temp) 
     { 
     $result[$temp['TYPE']][]=$temp['VALUE']; 
     } 
     print_r($result); 
     ?> 

輸出

Array ([FRUIT] => Array ([0] => BANANA [1] => ORANGE)) 
+0

請解釋投票,請給出原因 – Shin