2017-10-11 82 views
1

我正在学习PHP中的数组。我正在研究多维数组,其中我正面临一个问题。搜索和打印多维数组中的输出php

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

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. 
     ) 
) 

所需的输出,我想从上面的阵列打印是:

Chicago 
Science 2 p.m. 
Robotics 4 p.m. 

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

任何人都可以指导我如何处理这个问题?

回答

1

一种方式是通过场内阵列第一排序。 usort可用于此。

usort($events, function($a, $b) { 
    return strcmp($a['venue'], $b['venue']); 
}); 

数组排序后,您可以迭代它,并在每次到达新场地时输出标题。

$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

你可以使用一个foreach来得到你的结果如下。

foreach ($rows as $row) { 
    echo $row['venue']."<br>"; 
    echo $row['firstname']." ".$row['lastname']; 
} 
0

为每个场馆和存储过程和时间作为键和值的新数组分别

// 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']; 
} 

循环的新数组并显示结果按你的愿望。

// 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"; 
} 

出把

chicago 
science 2pm 
robtics 4pm 

newyork 
science 4pm 
robotics 3pm