首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php中多维数组中的搜索和打印输出

php中多维数组中的搜索和打印输出
EN

Stack Overflow用户
提问于 2017-10-11 19:55:26
回答 3查看 65关注 0票数 1

我正在学习PHP中的数组。我正在研究多维数组,在其中我面临一个问题。

下面是示例多维数组的说明:

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [venue] => chicago
            [course] => science
            [time] => 2pm
        )
    [1] => Array
        (
             [venue] => New York
             [course] => Robotics
             [time] => 3 p.m.
        )
    [2] => Array
        (
             [venue] => New York
             [course] => Science
             [time] => 4 p.m.
        )
    [3] => Array
        (
             [venue] => Chicago
             [course] => Robotics
             [time] => 4 p.m.
        )
)

我希望从上面的数组中打印的输出是:

代码语言:javascript
复制
Chicago
Science  2 p.m.
Robotics  4 p.m. 

New York 
Science 4 p.m.
Robotics 3 p.m. 

有人能指导我如何处理这个问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-11 20:41:36

一种方法是首先按地点对数组进行排序。usort可以用于这一目的。

代码语言:javascript
复制
usort($events, function($a, $b) {
    return strcmp($a['venue'], $b['venue']);
});

在对数组进行排序之后,您可以迭代它,并在每次到达新地点时输出一个标头。

代码语言:javascript
复制
$previousVenue = null;
foreach ($events as $event) {

    // check if this venue is the same as the previous, output header if not
    if ($event['venue'] != $previousVenue) {
        echo "<h3>$event[venue]</h3>";
    }
    // always output course and time
    echo "$event[course] $event[time]<br>";

    // current venue becomes previous venue
    $previousVenue = $event['venue'];
}
票数 1
EN

Stack Overflow用户

发布于 2017-10-11 20:08:12

为每个场馆创建一个新的数组,并分别将课程和时间作为关键和价值来存储。

代码语言:javascript
复制
// define an array
$new_array = array();
// loop the array
foreach($array as $key=>$value){
    // create an array with each venue and  course and time as key and values
    $new_array[$value['venue']][$value['course']] = $value['time'];
}

循环新数组并根据需要显示结果。

代码语言:javascript
复制
// loop the new array
foreach($new_array as $key=>$value){
    echo $key."\n";  // echo the venue
    krsort($value);  // Sort an array by key in reverse order
    foreach($value as $k=>$v){
        echo $k . ' ' . $v."\n"; // echo the course and time
    }
    echo "\n";
}

输出输出

代码语言:javascript
复制
chicago
science 2pm
robtics 4pm

newyork
science 4pm
robotics 3pm
票数 0
EN

Stack Overflow用户

发布于 2017-10-11 20:08:03

您可以使用预期得到的结果如下所示。

代码语言:javascript
复制
foreach ($rows as $row) {
    echo $row['venue']."<br>";
    echo $row['firstname']."  ".$row['lastname'];
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46696477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档