用数据库数据构造php数组


structure php array with db data

我有一个从db返回的数组,其结构如下:

[0] array(2) {
  ["Brand"] "A"
  ["Family"] "B"
}
[1] array(2) {
  ["Brand"] "A"
  ["Family"] "C"
}
[2] array(2) {
  ["Brand"] "A"
  ["Family"] "D"
}
[3] array(2) {
  ["Brand"] "B"
  ["Family"] "ABC"
}
[4] array(2) {
  ["Brand"] "B"
  ["Family"] "DD"
}

我需要创建一个这样的数组:

[0] array(2) {
  ["Brand"] "A" array() {
    "B",
    "C",
    "D"
}
[1] array(2) {
  ["Brand"] "B" array() {
    "ABC",
    "DD"
}

所以基本上,这个品牌应该是独一无二的,在每个品牌里面我都需要一个家族列表。

请尝试以下操作,$mainarray是您现在拥有的阵列

$brand = array();
foreach($mainarray as $v){
    $brand['Brand'][$v['Brand']][] = $v['Family'];
}

这是一个简单的数组递归练习。

以下是一些PHP伪代码:

$output = array();
foreach($array as $i){
//loop through the array returned from the db
$output[$i["brand"]] = array_unique(array_merge($output[$i["brand"]], array($i["Family"])));
//merge the existing families for the brand with the current iteration's, and maintain a set datastructure (no duplicate entries for each family)
}
var_dump($output);

这里是您需要的:

<?php
$array1=array(array('Brand'=>'A','Family'=>'B'), array('Brand'=>'A','Family'=>'C'), array('Brand'=>'A','Family'=>'D'), array('Brand'=>'B','Family'=>'ABC'), array('Brand'=>'B','Family'=>'DD'));

$brand=array();
        foreach($array1 as $value=>$data){
            foreach($data as $value2=>$data2){
                if($value2=='Family'):
                    if($value<3):
                    $brand['Brand']['A'][]=$data2;
                    else:
                    $brand['Brand']['B'][]=$data2;
                    endif;
                endif;
            }
        }
echo "<pre>";
print_r($brand);
echo "</pre>";  
?>