我有一個存儲帳戶和訂閱的數據庫。一個帳戶可以包含帳戶和訂閱,並且擁有三個以上的父級別。從數據庫查詢創建多維數組
從數據庫查詢結果的行看起來是這樣的:
$array = (0 => array("level" => "2", "accountno" => "123124234", "accountname" => "Hansel", "parentaccountno" => "000213123", "subscription" => "5423213213", "username" => "Gretchen");
(1級意味着它是頂級水平,這將有PARENTACCOUNTNO = NULL)。
從這個我想創建一個多維數組這看起來是這樣的:
accounts:
000213123
accounts:
123124234
name: Hansel
subscriptions:
5423213213
username: Gretchen
這是我的代碼到目前爲止,它的作品真的很好的前兩個級別。當有三個層次或更多的事情變得更加複雜,因爲只有知道自己的父母每個帳戶:
$hierarchy = array();
foreach ($decode as $row) {
$accountno = $row["ACCOUNTNO"];
$msisdn = $row["MSISDN"];
if ($row["PARENTACCOUNTNO"] == null)
$base_array_key = $hierarchy["accounts"];
$base_array_key[$accountno] = array("name" => $row["ACCOUNTNAME"], "accounts" => array(), "subscriptions" => array());
$hierarchy["accounts"][$accountno]["accounts"]["321323123213"] = "blaha";
if ($row["MSISDN"] != null)
$hierarchy["accounts"][$accountno]["subscriptions"][$msisdn] = array("enduser" => $row["ENDUSER"]);
}
的解決方案,我心目中現在的問題是,從每次迭代的基本密鑰傳遞到下一迭代,然後如果例如以前的級別是高於這個級別的兩個級別,則只需使用某種字符串替換來刪除密鑰的最後兩個部分。
有什麼更好的點子?我很確定這是做我想要完成的事情的一個糟糕的方式。
這是一個「完成我的代碼」問題嗎?或者你在某處遇到錯誤? – Starx
沒有錯誤,只是尋找一些友好的建議,我已經堅持了一個星期,試圖找到*最佳*解決方案。 –