2014-09-22 33 views
2

我有以下信息的数据库:PHP多维数组,每个号码在一个数组的数组

---------------------- 
    | ID | Name | Number | 
    ---------------------- 
    | 1 | aaa | 1 | 
    ---------------------- 
    | 2 | bbb | 1 | 
    ---------------------- 
    | 3 | ccc | 2 | 
    ---------------------- 
    | 4 | ddd | 2 | 
    ---------------------- 
And so on..... 

我要的是让这样的一个数组:

$array[1] = array ('aaa','bbb'); 
    $array[2] = array ('ccc','ddd'); 

And so on...... 

如何我有存档,循环? 这就是我到目前为止:

while ($array = $querry_res->fetch_assoc()) { 
    $final_array[$array['Number']] = array ($array['Name']); 
} 
print_r($final_array); 

这是行不通的。我想我应该用array_merge但无法弄清楚如何

回答

3

什么:

while ($array = $querry_res->fetch_assoc()) { 
    $final_array[$array['Number']][] = $array['Name']; 
} 
+0

没错,非常感谢你 – user2192013 2014-09-22 13:52:42

+0

欢迎您:) – 2014-09-22 13:55:19

0

你需要,检查是否与键的元素存在,如果有,推新值入阵,如果不创建一个新的数组:如果数组$是

while ($array = $querry_res->fetch_assoc()) { 
    if(isset($final_array[$array['Number']]){ 
     $final_array[$array['Number']][] = $array['Name']; 
    }else{ 
     $final_array[$array['Number']] = array ($array['Name']); 
    } 
} 
print_r($final_array); 
1

一个真正的数组包含键ID,号码和姓名

$final_array = array(); 
    while ($array = $querry_res->fetch_assoc()) { 
     $final_array[$array['Number']][] = array ($array['Name']); 
    } 

然后print_r的....

0

查询更改为

SELECT `Number`, GROUP_CONCAT(DISTINCT(`Name`)) as `Name` FROM `table` 

你会得到这样的回应: 总数= 1,名称= AAA,BBB 数= 2,名称= CCC,DDD

然后像做

while ($array = $querry_res->fetch_assoc()) { 
    $final_array[$array['Number']] = explode(',' $array['Name']); 
} 
print_r($final_array);