2017-10-11 81 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