2014-10-09 72 views
0

我有一個數組,我想通過單獨的數組將數組分隔成單個數組,由TNNID.by任何PHP函數將單獨的數組通過TXNID合併成一個單一的數組變量。因爲我想用父級TXNID保存數組和孩子TXNID save..My演示代碼是如何分隔兩個數組的ID

Array 
(
    [XYX] => Array 
     (
      [0] => Array 
       (
        [TXNObjectType] => 102 
        [CustomerAccountID] => 951 
        [ParentTXNLineNumber] => 1 
        [TXNID] => 11 

       ) 

      [1] => Array 
       (
        [TXNObjectType] => 84 
        [CustomerAccountID] => 951 
        [ParentTXNLineNumber] => 1 
        [TXNID] => 12 

       ) 

     ) 

    [XYZ] => Array 
     (
      [0] => Array 
       (
        [TXNID] => 11 
        [LineNo] => 7 
        [BranchID] => 164 

       ) 

      [1] => Array 
       (
        [TXNID] => 11 
        [LineNo] => 8 
        [BranchID] => 164 

       ) 

      [2] => Array 
       (
        [TXNID] => 12 
        [LineNo] => 9 
        [BranchID] => 164 

       ) 

      [3] => Array 
       (
        [TXNID] => 12 
        [LineNo] => 10 
        [BranchID] => 164 

       ) 

     ) 

) 

預期輸出:

Array(

    Array 
    (
     [XYX] => Array 
      (
       [0] => Array 
        (
         [TXNObjectType] => 102 
         [CustomerAccountID] => 951 
         [ParentTXNLineNumber] => 1 
         [TXNID] => 11 

        ) 
     ) 
    ) 

    Array(
    [XYZ] => Array 
      (
       [0] => Array 
        (
         [TXNID] => 11 
         [LineNo] => 7 
         [BranchID] => 164 

        ) 

       [1] => Array 
        (
         [TXNID] => 11 
         [LineNo] => 8 
         [BranchID] => 164 

      ) 
    ) 
) 


Array(

    Array 
    (
     [XYX] => Array 
      (
       [0] => Array 
        (
         [TXNObjectType] => 102 
         [CustomerAccountID] => 951 
         [ParentTXNLineNumber] => 1 
         [TXNID] => 12 

        ) 
     ) 
    ) 

    Array(
    [XYZ] => Array 
      (
       [0] => Array 
        (
         [TXNID] => 12 
         [LineNo] => 7 
         [BranchID] => 164 

        ) 

       [1] => Array 
        (
         [TXNID] => 12 
         [LineNo] => 8 
         [BranchID] => 164 

      ) 
    ) 
) 

所以請提出這個英里合適的解決方案。

+0

請編輯您的問題,以包含所需的結果和您用來嘗試解決問題的代碼。 – 2014-10-09 11:00:01

+0

您好先生,我更新了我的問題。我添加了一些我想要的結果的代碼。 – Abhishek 2014-10-09 11:04:53

回答

0

我會試着給你一個關於如何去做的方法。這裏你需要在重新排列嵌套數組時重視兩個鍵。首先是標記爲XYX,XYZ等的最外鍵。其次是兒童陣列的關鍵,即TXNID

所以,一開始你可以遍歷數組和變換(平整)成這種形式:

Array 
([0] => Array 
      (
       [TXNObjectType] => 102 
       [CustomerAccountID] => 951 
       [ParentTXNLineNumber] => 1 
       [TXNID] => 11 
       [Parent] => XYX //Store the parent at the same level 

      ) 

     [1] => Array 
      (
       [TXNObjectType] => 84 
       [CustomerAccountID] => 951 
       [ParentTXNLineNumber] => 1 
       [TXNID] => 12 
       [Parent] => XYX //Store the parent at the same level 
      ) 
     ... 

一旦你有了這個,你可以簡單地排序數組基於密鑰TXNID陣列。爲此,您可能需要使用uasort。你必須爲此定義一個自定義比較器,這應該是一個有趣的練習。

對數組數組進行排序後。你只需要最後一次遍歷這個數組並進行解壓縮,方法是檢查Parent鍵,並將數組元素推入key,並將排序後的數組作爲值返回所需的嵌套輸出。

還有several其他array功能在PHP可能會派上用場。這可能不是最有效的解決方案,但我希望它能讓你開始朝正確的方向發展。

+0

代碼???沒有得到正確的。 – Abhishek 2014-10-09 11:55:23

+0

如果您先嚐試自己編寫代碼並對其進行改進,我將不勝感激。如果你告訴我我不清楚的地方,我會盡力向你解釋我的做法。 – 2014-10-09 11:59:24

相關問題