【问题标题】:Iterating through a Multidimensional associative Array遍历多维关联数组
【发布时间】:2016-01-17 16:07:42
【问题描述】:

我想遍历以下数组(这是我 print_r 时的输出):

Array ( 
    [GetRecentCasesResult] => Array ( 
        [CaseHistory] => Array ( 
            [0] => Array ( 
                [caseNumber] => CAS-00305-Q0S7Y5 
                [dateCreated] => 2016-01-17 11:00:09 AM 
                [faultType] => Repair Blocked Sewer - Small Pipes 
                [status] => Open 
            ) 
            [1] => Array ( 
                [caseNumber] => CAS-00308-W4F8F0 
                [dateCreated] => 2016-01-17 01:17:04 PM 
                [faultType] => Repair Pothole in Major Road 
                [status] => Open 
            ) 
            [2] => Array ( 
                [caseNumber] => CAS-00309-T8B2J6 
                [dateCreated] => 2016-01-17 01:44:38 PM 
                [faultType] => Repair Pothole in Major Road 
                [status] => Open 
            ) 
            [3] => Array ( 
                [caseNumber] => CAS-00311-K7H8D9 
                [dateCreated] => 2016-01-17 02:18:29 PM 
                [faultType] => Electricity outage - Business 
                [status] => Open 
            ) 
            [4] => Array ( 
                [caseNumber] => CAS-00303-C8M0K8 
                [dateCreated] => 2016-01-17 10:14:45 AM 
                [faultType] => Electricity outage - Business 
                [status] => Open 
            ) 
            [5] => Array ( 
                [caseNumber] => CAS-00306-R7W8S7 
                [dateCreated] => 2016-01-17 11:14:40 AM 
                [faultType] => Animal Carcass Removal 
                [status] => Open 
            ) 
            [6] => Array ( 
                [caseNumber] => CAS-00307-B5Q6C0 
                [dateCreated] => 2016-01-17 11:17:22 AM 
                [faultType] => Water Leak 
                [status] => Open
            ) 
        ) 
    )
)

我尝试了以下代码:

foreach ($result as $firtsone) {
foreach ($firtsone as $key => $value) {
    echo $key.": ".$value;
}
}

这是我得到的错误:

注意:第 30 行 C:\xampp\htdocs\emgtsz\faulth.php 中的数组到字符串转换 案例历史:数组

请帮忙。

【问题讨论】:

  • 如通知所述,$value 并不总是一个字符串,有时它是一个数组。以is_array 为例。
  • 例如,$value 总是一个数组,所以你需要再添加一个循环...

标签: php arrays multidimensional-array nested-loops


【解决方案1】:

问题:

这是我得到的结果:注意:数组到字符串的转换在 C:\xampp\htdocs\emgtsz\faulth.php 第 30 行 CaseHistory: Array

那是因为$value 并不总是一个字符串,它可能是一个数组。

解决方案:

递归迭代数组并打印(键,值)对,如下所示:

function process_array($array){
    foreach($array as $key => $value){
        if(is_array($value)){
            process_array($value);
        }else{
            echo $key . ": " . $value . "<br />";
        }
    }
}

process_array($result);

已编辑:

如何将这些显示为表格而不是一个接一个?

使用迭代方法,如下所示:

echo "<table border='1'>";
echo "<tr>";
echo "<th>Case Number</th>";
echo "<th>Date Created</th>";
echo "<th>Fault Type</th>";
echo "<th>status</th>";
echo "</tr>";

$arrayLength = count($result['GetRecentCasesResult']['CaseHistory']);
for($i = 0; $i < $arrayLength; ++$i){
    echo "<tr>";
    echo "<td>" . $result['GetRecentCasesResult']['CaseHistory'][$i]['caseNumber'] . "</td>";
    echo "<td>" . $result['GetRecentCasesResult']['CaseHistory'][$i]['dateCreated'] . "</td>";
    echo "<td>" . $result['GetRecentCasesResult']['CaseHistory'][$i]['faultType'] . "</td>";
    echo "<td>" . $result['GetRecentCasesResult']['CaseHistory'][$i]['status'] . "</td>";
    echo "</tr>";
}

echo "</table>";

【讨论】:

  • @devpro 我已经编辑了这个问题。现在查看数组。
  • @RajdeepPaul,我如何将这些显示为表格而不是一个接一个?
  • @kya 如果您想在表格单元格中显示它们,那么迭代方式将是一个好方法。请参阅我的答案的已编辑部分。
猜你喜欢
  • 1970-01-01
  • 2012-05-26
  • 2017-05-08
  • 2012-04-16
  • 2013-07-05
相关资源
最近更新 更多