2014-10-09 24 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

相关问题