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

基于它的类型相似性。

4

2 回答 2

0

在 PHP 中是否有任何函数可以创建此行

不,没有现成的功能。
您必须编写一个程序来解析您的字符串并将它们放入数组中

或者您必须更改输入源格式。例如,对于 JSON,因为它可以使用您要求的单个函数进行解析。

如果您以这种方式将这些行存储在 DB 中 - 您必须将其更改为更合理的结构,将类别与项目分开存储。

一般来说,您必须从用于从数据库中获取数据的循环中获取您的组。

例如,PDO 对你有一些 [愚蠢的] 魔法:

<?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 很容易模拟这种行为

于 2013-05-22T06:00:59.743 回答
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 ) )
于 2013-05-22T06:33:35.653 回答