本文目錄一覽:
- 1、PHP 多維數組的合併與重組
- 2、php多維數組子類合併於父類
- 3、php怎麼實現一張表中子類ID歸於父類ID
- 4、php下將多個數組合併成一個數組的方法與實例代碼
- 5、php兩個相關的多維數組怎麼合併成一個數組
PHP 多維數組的合併與重組
用foreach可以實現,希望對樓主有所幫助:$result 是結果
$result=array();
foreach ( $attribute as $k=$v ) {
$name= $v[‘group_name’];
$item = $v[‘item’];
// unset($v[‘group_name’]); // unset($v[‘item’]);
$result[$k][‘group_name’]=$name;
$result[$k][‘item’]=$item;
}
echo “pre”;
print_r( $result );
echo “/pre”;
php多維數組子類合併於父類
你這樣都是同個id分在一起,但是沒法劃分等級啊。我覺得你這個應該在表中加個字段parentid,比如說 ,學生管理 為一級,他下面的添加,列表是他的子類,這樣就好取了。類似於分類,出現等級劃分的效果。
php怎麼實現一張表中子類ID歸於父類ID
現在你的裏面只分了兩個類。其實這個表可以做無限級分類。輸出用遞歸實現。正好我這幾天研究了這個。代碼寫給你。
$result = mysql_query(“select * from tmodule_conf order by ModuleId”);
//首先我們把各個分類的值保存在一個二維數組中,在下面的遞歸函數里有用。
while($row = mysql_fetch_object($result)){
$arr[] = array($row-ModuleId,$row-SubModuleId,$row-ModuleName);//每行保存一個分類的ModuleId,SubModuleId,ModuleName
}
###########普通顯示分類####################
function fenlei($SubModuleId=-1,$str){ //$f_id初始化為0,也就是從最大分類開始循環.
global $arr; //聲明$arr為全局變量才可在函數里引用。
for($i=0;$icount($arr);$i++){ //對每個分類進行循環。
if($arr[$i][1]==$SubModuleId){ //$arr[$i][1]表示第$i+1個分類的SubModuleId的值。開始$SubModuleId=-1,也就是把SubModuleId=-1的分類輸出來。
echo $str.”–“.$arr[$i][2].”br”; //$arr[$i][2]表示第$i+1個分類的name的值。
fenlei($arr[$i][0],$str.”nbsp;nbsp;”); //$arr[$i][1]表示第$i+1個分類的id的值。進行遞歸,也就是把自己的ModuleId作為SubModuleId參數把自己的子類再循環出來。
}
}
}
//調用例子
fenlei(-1,” nbsp;nbsp;”);
php下將多個數組合併成一個數組的方法與實例代碼
1.合併數組
array_merge()函數將數組合併到一起,返回一個聯合的數組。所得到的數組以第一個輸入數組參數開始,按後面數組參數出現的順序依次迫加。其形式為:
複製代碼
代碼如下:
array
array_merge
(array
array1
array2…,arrayN)
將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作為結果的數組。
如果輸入的數組中有相同的字符串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。
如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引。
實例如下:
複製代碼
代碼如下:
$face
=
array(“J”,”Q”,”K”,”A”);
$numbered
=
array(“2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”);
$cards
=
array_merge($face,
$numbered);
shuffle($cards);
print_r($cards);
這將返回如下所示的結果,運行代碼:
複製代碼
代碼如下:
Array
(
[0]
=
A
[1]
=
4
[2]
=
9
[3]
=
3
[4]
=
K
[5]
=
7
[6]
=
5
[7]
=
Q
[8]
=
6
[9]
=
8
[10]
=
2
[11]
=
J
)
2.遞歸追加數組
array_merge_recursive()函數與array_merge()相同,可以將兩個或多個數組合併在一起,形成一個聯合的數組.兩者之間的區別在於,當某個輸入數組中的某個鍵己經存在於結果數組中時該函數會採取不同的處理方式.array_merge()會覆蓋前面存在的鍵/值對,替換為當前輸入數組中的鍵/值對,而array_merge_recursive()將把兩個值合併在一起,形成一個新的數組,並以原有的鍵作為數組名。還有一個數組合併的形式,就是遞歸追加數組。其形式為:
view
sourceprint?array
array_merge_recursive(
array
key,array
values
)
示例如下:
複製代碼
代碼如下:
$class1
=
array(“John”
=
100,
“James”
=
85);
$class2
=
array(“Micky”
=
78,
“John”
=
45);
$classScores
=
array_merge_recursive($class1,
$class2);
print_r($classScores);
這將返回如下結果:
view
sourceprint?Array
(
[John]
=
Array
(
[0]
=
100
[1]
=
45
)
[James]
=
85
[Micky]
=
78
)
3.連接兩個數組
array_combine()函數會得到一個新數組,它由一組提交的鍵和對應的值組成。其形式為:
view
sourceprint?array
array_merge(array
array1,array
array2[…,array
arrayN])
注意,兩個輸入數組必須大小相同,不能為空。示例如下:
複製代碼
代碼如下:
$abbreviations
=
array(“AL”,”AK”,”AZ”,”AR”);
$states
=
array(“Alabama”,”Alaska”,”Arizona”,”Arkansas”);
$stateMap
=
array_combine($abbreviations,$states);
print_r($stateMap);
這會返回:
複製代碼
代碼如下:
Array
(
[AL]
=
Alabama
[AK]
=
Alaska
[AZ]
=
Arizona
[AR]
=
Arkansas
)
php兩個相關的多維數組怎麼合併成一個數組
如果是兩個數組是相對應的,可以使用以下方法:
?php
//數組1(gc_class):
$gc_class = array(
0 =array(‘gc_id’=1,’gc_name’=’分類1’, ‘gc_title’ = ‘111111’),
1 =array(‘gc_id’=2,’gc_name’=’分類2’, ‘gc_title’ = ‘2222’)
);
//數組2(acticity):
$acticity = array(
‘0’=array(‘activity_id’=1, ‘gc_class’=1, ‘activity_name’=’分類1下面的活動’),
‘1’=array(‘activity_id’=2, ‘gc_class’=2, ‘activity_name’=’分類2下面的活動’)
);
$arrs = array();
foreach($gc_class as $key = $_gc_class){
$arrs[$key] = array_merge($_gc_class, $acticity[$key]);
}
print_r($arrs);
exit;
原創文章,作者:ZNPQ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/144895.html