我正在学习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. 有人能指导我如何处理这个问题吗?
发布于 2017-10-11 20:41:36
一种方法是首先按地点对数组进行排序。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'];
}发布于 2017-10-11 20:08:12
为每个场馆创建一个新的数组,并分别将课程和时间作为关键和价值来存储。
// 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发布于 2017-10-11 20:08:03
您可以使用预期得到的结果如下所示。
foreach ($rows as $row) {
echo $row['venue']."<br>";
echo $row['firstname']." ".$row['lastname'];
}https://stackoverflow.com/questions/46696477
复制相似问题