行到嵌套数组

时间:2013-05-22 05:57:33

标签: php arrays

在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(
fruit => array('apple', 'orange', 'strawberry'),
animal => array('rabbit', 'buffalo', 'ant'),
goods => array('cutter', 'scissors'),
)

基于它的类型相似性。

2 个答案:

答案 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

来模拟此行为非常容易

答案 1 :(得分: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 ) )