ABCを含むランダム配列整理
7156 ワード
【必要】2次元配列にはN組の配列が格納されており、各配列のキー値はtitle(A)、desc(B)、photo(C)であり、ABCの3つのグループごとに新しい2次元配列に整理されている.バックグラウンド構成のデータによる様々な特色を考慮する必要がある.データは以下の通りである.
次のような効果が得られます.
整理前整理後
ABC [ABC]
ABCABC [ABC][ABC]
A [A]
AABC [A][ABC]
ACBC [AC][BC]
ABBC [AB`C]
【考え方】デフォルトでtitle、desc、photoを含むデータグループ単位tempを構築し、整理対象の配列を遍歴し、keyがtitleであることを発見した場合、まずtemp配列をreturnData配列に保存し、さらにtempを新規し、titleをtemp配列に挿入する.photo数群を発見した後、photoをtemp配列に挿入し、temp配列をreturnData配列に戻すまで保存し、さらに新規新しいtemp配列.出現する可能性のある連続descについては、改行記号で新しいdescにスペルし、tempを挿入します.
【コード】
1 // ABC
2 $abc= array(
3 0=>array("title" => " ",),
4 1=>array( "desc" => " ",),
5 2=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
6 );
7 // ABCABC
8 $abcabc = array(
9 0=>array("title" => " ",),
10 1=>array( "desc" => " ",),
11 2=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
12 3=>array("title" => " ",),
13 4=>array( "desc" => " ",),
14 5=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
15 );
16 // A
17 $a = array(
18 0=>array("title" => " ",),
19 );
20 // AABC
21 $aabc = array(
22 0=>array("title" => " ",),
23 1=>array("title" => " ",),
24 2=>array( "desc" => " ",),
25 3=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
26 );
27 // ACBC
28 $acbc = array(
29 0=>array("title" => " ",),
30 1=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
31 2=>array( "desc" => " ",),
32 3=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
33 );
34 // ABBC
35 $abbc =array(
36 0=>array("title" => " ",),
37 1=>array( "desc" => " ",),
38 2=>array( "desc" => " ",),
39 3=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
40 );
次のような効果が得られます.
整理前整理後
ABC [ABC]
ABCABC [ABC][ABC]
A [A]
AABC [A][ABC]
ACBC [AC][BC]
ABBC [AB`C]
【考え方】デフォルトでtitle、desc、photoを含むデータグループ単位tempを構築し、整理対象の配列を遍歴し、keyがtitleであることを発見した場合、まずtemp配列をreturnData配列に保存し、さらにtempを新規し、titleをtemp配列に挿入する.photo数群を発見した後、photoをtemp配列に挿入し、temp配列をreturnData配列に戻すまで保存し、さらに新規新しいtemp配列.出現する可能性のある連続descについては、改行記号で新しいdescにスペルし、tempを挿入します.
【コード】
1 foreach($a as $value){
2 if(!isset($value['title'])){
3 //
4 if(isset($value['desc']) && !empty($value['desc'])){
5 //
6 if(isset($temp['desc']) && !empty($temp['desc'])){
7 $temp['desc'] = $temp['desc'].PHP_EOL.$value['desc'];
8 }else{
9 $temp['desc'] .= $value['desc'];
10 }
11 }else{
12 // ,
13 $temp['photo'] = $value['photo'];
14 if(!empty($temp)){
15 $returnData[] = $temp;
16 }
17 $temp = array();
18 }
19 }
20 else{
21 // ,
22 if(!empty($temp)){
23 $returnData[] = $temp;
24 }
25 $temp = array();
26 $temp['title'] = $value['title'] ;
27 }
28 }
29 if(!empty($temp)){
30 $returnData[] = $temp;
31 }
32 var_dump($returnData);