數組複建

來源:互聯網
上載者:User
數組重構
本帖最後由 memory_qian 於 2015-06-03 13:16:30 編輯

Array
(
[0] => Array
(
[title] => 111
[name] => 上海
)

[1] => Array
(
[title] => 111
[name] => 江蘇
)

[2] => Array
(
[title] => dd
[name] => 上海
)

[3] => Array
(
[title] => dd
[name] => 江蘇
)

[4] => Array
(
[title] => dd
[name] => 浙江
)

)


我想把 上面的 二位元組的格式 重構為 title名字一樣的合并起來 例如

array(
[0]=>array(
[title]=111
[name]=上海,蘇州
),
);

------解決思路----------------------
$arr = array(
array('title'=>'111','name'=>'上海'),
array('title'=>'111','name'=>'杭州'),
array('title'=>'dd','name'=>'上海'),
array('title'=>'dd','name'=>'寧波'),
array('title'=>'dd','name'=>'無錫'),
);
$title_arr = array();
$data = array();
foreach($arr as $value){
if(!in_array($value['title'],$title_arr)){
array_push($title_arr,$value['title']);
$data[] = $value;
}else{
$index = array_search($value['title'],$title_arr);
$data[$index]['name'] .= ','.$value['name'];
}
}
var_dump($data);

------解決思路----------------------
$arr = array(
array('title'=>'111','name'=>'上海'),
array('title'=>'111','name'=>'杭州'),
array('title'=>'dd','name'=>'上海'),
array('title'=>'dd','name'=>'寧波'),
array('title'=>'dd','name'=>'無錫'),
);
$tmp = $arr[0]['title'];
$newarr = array();
foreach($arr as $value){
$key = $tmp == $value['title'] ? $tmp : $value['title'];
$newarr[$key]['title'] = $value['title'];
$newarr[$key]['name'] .= $value['name'].',';
}
var_dump($newarr);

------解決思路----------------------
這個看不是很難,根據數組title來做判斷。
重新定義一個接收數組。
迴圈原數組
原來數組title的值相同,把title賦值到新數組中name值做拼接;
不相同,title和name都賦值過去。
迴圈完後新數組就是你要的格式
------解決思路----------------------
select a.title, GROUP_CONCAT(c.name) AS name
from information_agent as a
left join information_agent_area as b on a.id=b.tid
left join sales_area as c on b.area_id=c.id
GROUP BY a.title

指令串拆行看的清楚些,注意有大寫的那些地方
------解決思路----------------------

基本查詢
mysql> select * from aa;
+------+------+

------解決思路----------------------
id
------解決思路----------------------
name
------解決思路----------------------

+------+------+

------解決思路----------------------
1
------解決思路----------------------
10
------解決思路----------------------


------解決思路----------------------
1
------解決思路----------------------
20
------解決思路----------------------


------解決思路----------------------
1
------解決思路----------------------
20
------解決思路----------------------


------解決思路----------------------
2
------解決思路----------------------
20
------解決思路----------------------


------解決思路----------------------
3
------解決思路----------------------
200
------解決思路----------------------


------解決思路----------------------
3
------解決思路----------------------
500
------解決思路----------------------

+------+------+
6 rows in set (0.00 sec)

1.以id分組,把name欄位的值列印在一行,逗號分隔(預設)
mysql> select id,group_concat(name) from aa group by id;
+------+--------------------+

------解決思路----------------------
id
------解決思路----------------------
group_concat(name)
------解決思路----------------------

+------+--------------------+

------解決思路----------------------
1
------解決思路----------------------
10,20,20
------解決思路----------------------


------解決思路----------------------
2
------解決思路----------------------
20
------解決思路----------------------


------解決思路----------------------
3
------解決思路----------------------
200,500
------解決思路----------------------

+------+--------------------+
3 rows in set (0.00 sec)
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.