迭代3维数组php

时间:2016-02-02 10:08:33

标签: php arrays multidimensional-array

我从MySQL查询创建了一个三维数组(图1)(图2)。 顶级是[Expense_ID],下一级是[Participant_ID]。每个Expense_ID可以有多个Participant_ID。

Qu 1)虽然数据全部在数组的底层重复,但有人可以告诉我如何迭代这个数组(在每个级别)来回显根据原始数据的结构(如果我可以回应它,那么我可以执行我需要做的计算)。 即在echo语句中,[Expense_ID]将从数组的顶层获取,[Participant_ID]将从第2级获取,其余3个字段将从底层获取。

Qu 2)我不知道这是否是最好的阵列结构。我用来访问这个数组的代码如图3所示。我怎么能改变它,以便第一级显示为[0] => 86和2级是[0] => 130,1 => 135 这可能更容易使用。

问2a)如果采用这种格式,我将如何遍历数组?

非常感谢任何帮助。

图1:阵列结构

Array
(
    [86] => Array
        (
            [130] => Array
                (
                    [Expense_ID] => 86
                    [Expense_Description] => Item1
                    [Total_Amount] => 3000.00
                    [Expense_Payer_ID] => 134
                    [Participant_ID] => 130
                )

            [135] => Array
                (
                    [Expense_ID] => 86
                    [Expense_Description] => Item1
                    etc.

图2

Fig 2: Data from MySQL query

图3

    $result = array();
    while ($row = mysql_fetch_array($Exps)){
        $Exp_ID    = $row['Expense_ID'];    
        $Participant_ID = $row['Participant_ID'];
        $result[$Exp_ID][$Participant_ID] = array(                   
            'User_ID' => $row['User_ID'],
            'Expense_ID' => $row['Expense_ID'],
             etc.
        );
    }

1 个答案:

答案 0 :(得分:2)

我不确定我理解你在问什么,但我认为一个简单的foreach loop会解决问题。

foreach ($result as $id => $participants) {            

    // here your Expense_ID == $id            

    foreach ($participants as $pid => $value) {            

        // here Participant_ID == $pid
        // 
        // Total_Amount == $value['Total_Amount']
        // Expense_Description == $value['Expense_Description']
        // ....
    }
}

希望这可以提供帮助。