導航:首頁 > 編程語言 > php數組遞歸樹

php數組遞歸樹

發布時間:2024-02-24 04:50:18

php 遞歸處理數組,並組合成新的數組

/**
*多維數組遞歸合並
*/
functionmultimerge(){
$arrs=func_get_args();
$merged=array();
while($arrs){
$array=array_shift($arrs);
if(!$array){
continue;
}
foreach($arrayas$key=>$value){
if(is_string($key)){
if(is_array($value)&&array_key_exists($key,$merged)&&is_array($merged[$key])){
$merged[$key]=call_user_func(__FUNCTION__,$merged[$key],$value);
}else{
$merged[$key]=$value;
}
}else{
$merged[]=$value;
}
}
}
return$merged;
}

$a1=array('user'=>array('name'=>'tony','score'=>23));
$a2=array('user'=>array('name'=>'tony','score'=>255),'name'=>'tom');
$a3=array('user'=>array('name'=>'tony','score'=>288,'test'=>'abc'),'name'=>'jack');
$result=multimerge($a1,$a2,$a3);
var_mp($result);

❷ PHP:數值數組疊加的遞歸方法

-數值數組疊加的遞歸方法:幾個相同格式的數組的對枝唯應項疊猛御培加,得到一個此種格拆悔式的數組
-@param array(數組1, 數組2, ...)
-@return array 數組為上面數組1,數組2,...的對應項疊加

❸ php 常用的數組函數都有哪些 作用是什麼有什麼特點 怎麼使用

php常用的數組函數的作用特點如下:


  1. array_change_key_case -- 返回字元串鍵名全為小寫或大寫的數組

  2. array_chunk -- 將一個數組分割成多個

  3. array_combine -- 創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值

  4. array_count_values -- 統計數組中所有的值出現的次數

  5. array_diff_assoc -- 帶索引檢查計算數組的差集

  6. array_diff_key -- 使用鍵名比較計算數組的差集

  7. array_diff_uassoc -- 用用戶提供的回調函數做索引檢查來計算數組的差集

  8. array_diff_ukey -- 用回調函數對鍵名比較計算數組的差集

  9. array_diff -- 計算數組的差集

  10. array_fill_keys -- 使用指定的鍵和值填充數組

  11. array_fill -- 用給定的值填充數組

  12. array_filter -- 用回調函數過濾數組中的單元

  13. array_flip -- 交換數組中的鍵和值

  14. array_intersect_assoc -- 帶索引檢查計算數組的交集

  15. array_intersect_key -- 使用鍵名比較計算數組的交集

  16. array_intersect_uassoc -- 帶索引檢查計算數組的交集,用回調函數比較索引

  17. array_intersect_ukey -- 用回調函數比較鍵名來計算數組的交集

  18. array_intersect -- 計算數組的交集

  19. array_key_exists -- 檢查給定的鍵名或索引是否存在於數組中

  20. array_keys -- 返回數組中所有的鍵名

  21. array_map -- 將回調函數作用到給定數組的單元上

  22. array_merge_recursive -- 遞歸地合並一個或多個數組

  23. array_merge -- 合並一個或多個數組

  24. array_multisort -- 對多個數組或多維數組進行排序

  25. array_pad -- 用值將數組填補到指定長度

  26. array_pop -- 將數組最後一個單元彈出(出棧)

  27. array_proct -- 計算數組中所有值的乘積

  28. array_push -- 將一個或多個單元壓入數組的末尾(入棧)

  29. array_rand -- 從數組中隨機取出一個或多個單元

  30. array_rece -- 用回調函數迭代地將數組簡化為單一的值

  31. array_replace_recursive -- 使用傳遞的數組遞歸替換第一個數組的元素

  32. array_replace -- 使用傳遞的數組替換第一個數組的元素

  33. array_reverse -- 返回一個單元順序相反的數組

  34. array_search -- 在數組中搜索給定的值,如果成功則返回相應的鍵名

  35. array_shift -- 將數組開頭的單元移出數組

  36. array_slice -- 從數組中取出一段

  37. array_splice -- 把數組中的一部分去掉並用其它值取代

  38. array_sum -- 計算數組中所有值的和

  39. array_udiff_assoc -- 帶索引檢查計算數組的差集,用回調函數比較數據

  40. array_udiff_uassoc -- 帶索引檢查計算數組的差集,用回調函數比較數據和索引

  41. array_udiff -- 用回調函數比較數據來計算數組的差集

  42. array_uintersect_assoc -- 帶索引檢查計算數組的交集,用回調函數比較數據

  43. array_uintersect_uassoc -- 帶索引檢查計算數組的交集,用回調函數比較數據和索引

  44. array_uintersect -- 計算數組的交集,用回調函數比較數據

  45. array_unique -- 移除數組中重復的值

  46. array_unshift -- 在數組開頭插入一個或多個單元

  47. array_values -- 返回數組中所有的值

  48. array_walk_recursive -- 對數組中的每個成員遞歸地應用用戶函數

  49. array_walk -- 對數組中的每個成員應用用戶函數

  50. array -- 新建一個數組

  51. arsort -- 對數組進行逆向排序並保持索引關系

  52. asort -- 對數組進行排序並保持索引關系

  53. compact -- 建立一個數組,包括變數名和它們的值

  54. count -- 計算數組中的單元數目或對象中的屬性個數

  55. current -- 返回數組中的當前單元

  56. each -- 返回數組中當前的鍵/值對並將數組指針向前移動一步

  57. end -- 將數組的內部指針指向最後一個單元

  58. extract -- 從數組中將變數導入到當前的符號表

  59. in_array -- 檢查數組中是否存在某個值

  60. key -- 從關聯數組中取得鍵名

  61. krsort -- 對數組按照鍵名逆向排序

  62. ksort -- 對數組按照鍵名排序

  63. list -- 把數組中的值賦給一些變數

  64. natcasesort -- 用「自然排序」演算法對數組進行不區分大小寫字母的排序

  65. natsort -- 用「自然排序」演算法對數組排序

  66. next -- 將數組中的內部指針向前移動一位

  67. pos -- current 的別名

  68. prev -- 將數組的內部指針倒回一位

  69. range -- 建立一個包含指定范圍單元的數組

  70. reset -- 將數組的內部指針指向第一個單元

  71. rsort -- 對數組逆向排序

  72. shuffle -- 將數組打亂

  73. sizeof -- count 的別名

  74. sort -- 對數組排序

  75. uasort -- 使用用戶自定義的比較函數對數組中的值進行排序並保持索引關聯

  76. uksort -- 使用用戶自定義的比較函數對數組中的鍵名進行排序

  77. usort -- 使用用戶自定義的比較函數對數組中的值進行排序


關於如何使用,那是要根據使用者需求來衡量,不能一言概括

使用語法如下:

<?php
$arr=array('Hello','World!');
$arr=implode(',',$arr);

echo$arr;
?>

結果是:HelloWorld!


如果你想更多的了解php的數組函數,我建議你詳細地去看看php手冊

php手冊官網:http://www.php.net/manual/zh/index.php

❹ PHP遞歸樹形菜單

可以參考以下代碼,但需要把你自己的資料庫鏈接,表等改一下就可以了

<html>
<head>
<link href='style.css' rel=stylesheet>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javaScript" src="TreeMenu.js"></script>
</head>
<body>
<?php
//基本變數設置
$GLOBALS["ID"] =1; //用來跟蹤下拉菜單的ID號
$layer=1; //用來跟蹤當前菜單的級數
//連接資料庫
$Con=mysql_connect("localhost","root","1234");
mysql_select_db("wiki");
//提取一級菜單
$sql="SELECT * FROM wiki where pid=0";
$result=mysql_query($sql,$Con);
//如果一級菜單存在則開始菜單的顯示
if(mysql_num_rows($result)>0) ShowTreeMenu($Con,$result,$layer,$ID);
//=============================================
//顯示樹型菜單函數 ShowTreeMenu($con,$result,$layer)
//$con:資料庫連接
//$result:需要顯示的菜單記錄集
//layer:需要顯示的菜單的級數
//=============================================
function ShowTreeMenu($Con,$result,$layer)
{
//取得需要顯示的菜單的項目數
$numrows=mysql_num_rows($result);

//開始顯示菜單,每個子菜單都用一個表格來表示
echo "<table cellpadding='0' cellspacing='0' border='0'>";
for($rows=0;$rows<$numrows;$rows++)
{
//將當前菜單項目的內容導入數組
$menu=mysql_fetch_array($result);
//提取菜單項目的子菜單記錄集
$sql="select * from wiki where pid=$menu[cid]";
$result_sub=mysql_query($sql,$Con);
echo "<tr>";
//如果該菜單項目有子菜單,則添加JavaScript onClick語句
if(mysql_num_rows($result_sub)>0)
{
echo "<td width='20'><img src='folder.gif' border='0'></td>";
echo "<td class='Menu' onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].");'>";
}
else
{
echo "<td width='20'><img src='file.gif' border='0'></td>";
echo "<td class='Menu'>";
}
//如果該菜單項目沒有子菜單,並指定了超級連接地址,則指定為超級連接,
//否則只顯示菜單名稱
//if($menu[url]!="")
//echo "<a href='$menu[cid]'>$menu[name]</a>";
//else
echo $menu['name'];
echo "
</td>
</tr>
";
//如果該菜單項目有子菜單,則顯示子菜單
if(mysql_num_rows($result_sub)>0)
{
//指定該子菜單的ID和style,以便和onClick語句相對應
echo "<tr id=Menu".$GLOBALS["ID"]++." style='display:none'>";
echo "<td width='20'> </td>";
echo "<td>";
//將級數加1
$layer++;
//遞歸調用ShowTreeMenu()函數,生成子菜單
ShowTreeMenu($Con,$result_sub,$layer);
//子菜單處理完成,返回到遞歸的上一層,將級數減1
$layer--;
echo "</td></tr>";
}
//繼續顯示下一個菜單項目
}
echo "</table>";
}
?>
</body>
</html>

❺ PHP怎麼遞歸

下面我舉一個其他的例子,雖然不是族譜,但是原理都是一樣的。

在一些復雜的系統中,要求對信息欄目進行無限級的分類,以增強系統的靈活性。那麼PHP是如何實現無限級分類的呢?我們在本文中使用遞歸演算法並結合mysql數據表實現無限級分類。
遞歸,簡單的說就是一段程序代碼的重復調用,當把代碼寫到一個自定義函數中,將參數等變數保存,函數中重復調用函數,直到達到某個條件才跳出,返回相應的數據。
Mysql
首先我們准備一張數據表class,記錄商品分類信息。表中有三個欄位,id:分類編號,主鍵自增長;title:分類名稱;pid:所屬上級分類id。
class表結構:

CREATE TABLE IF NOT EXISTS `class` (
`id` mediumint(6) NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`pid` mediumint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入數據後,如圖:

如果要輸出json格式的數據,則可使用:

echo json_encode($list);

閱讀全文

與php數組遞歸樹相關的資料

熱點內容
主管開除女程序員 瀏覽:712
雲伺服器轉售 瀏覽:540
壓縮空氣漏氣量怎樣計算 瀏覽:102
手機app是怎麼跳轉的 瀏覽:664
學編程的重要性 瀏覽:24
程序員去按摩 瀏覽:739
奧迪手機控車app怎麼添加愛車 瀏覽:4
收磚機石獅編程培訓廠家 瀏覽:761
吉里吉里2安卓模擬器怎麼用 瀏覽:818
編譯器將匯編代碼 瀏覽:681
電路板加密錯誤 瀏覽:21
java自動機 瀏覽:363
相機連拍解壓 瀏覽:31
linuxssh服務重啟命令 瀏覽:330
茂名氫氣隔膜壓縮機 瀏覽:47
程序員地鐵寫程序 瀏覽:330
java的switchenum 瀏覽:329
pdf瓷器 瀏覽:905
怎樣用adb命令刷機 瀏覽:962
蘋果手機怎麼買app 瀏覽:303