我有一个数组,我希望通过TNXID.by将任何php函数单独数组由TXNID分成单个数组到单个数组变量。因为我想用父TXNID和子TXNID保存数组save..My演示代码是
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 :(得分: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
推入,并将排序后的数组作为值返回一个像你想要的嵌套输出。
array
中的several个其他PHP
函数可能会派上用场。这可能不是最有效的解决方案,但我希望它能让你开始朝着正确的方向前进。