多维数组:仅显示来自不同数组的相同键具有相同值的数据
Multidimensional Array: display data only where the same key from different arrays have the same value
我有一个从网络服务调用返回给我的数组。该数组如下所示:
$flights_data = array
(
'departure_trip_data' => array
(
0 => array('departure_date'=>'Mar 25, 2015', 'ticket_class'='Y'),
1 => array('departure_date'=>'Mar 25, 2015', 'ticket_class'='B'),
2 => array('departure_date'=>'Mar 25, 2015', 'ticket_class'='H'),
),
'return_trip_data' => array
(
0 => array('departure_date'=>'Mar 28, 2015', 'ticket_class'='Y'),
1 => array('departure_date'=>'Mar 28, 2015', 'ticket_class'='B'),
2 => array('departure_date'=>'Mar 28, 2015', 'ticket_class'='K'),
)
);
我是这样处理的:
<?php
$departure_trips = $flight_data['departure_trip_data'];
$return_trips = $flight_data['return_trip_data'];
?>
<?php for($i = 0; $i < count($departure_trips); $i++): ?>
<?php
$curr_departure_trip = $departure_trips[$i];
$curr_return_trip = $return_trips[$i];
?>
<td>Departure Date : <?php echo $curr_departure_trip['departure_date']; ?></td>
<td>Return Date : <?php echo $curr_return_trip['departure_date']; ?></td>
<td>Ticket Class : <?php echo $curr_departure_trip['ticket_class']; ?> </td>
<!-- long lines of plain HTML code goes here -->
<?php endfor; ?>
我的问题是:如何只显示 departure_trip_data
数组和 return_trip_data
数组中 ticket_class
值相同的情况的数据?非常感谢任何帮助。
您可以使用嵌套循环遍历数组并逐个比较,如果找到匹配则处理它
好吧,如果我没猜错的话,
for($i = 0; $i < count($departure_trips); $i++)
{
$curr_departure_trip = $departure_trips[$i];
$curr_return_trip = $return_trips[$i];
if($curr_departure_trips['ticket_class'] == $curr_return_trips['ticket_class']) {
echo '<td>Departure Date : '. $curr_departure_trip['departure_date']. '</td>';
echo '<td>Return Date : '. $curr_return_trip['departure_data']. '</td>';
echo '<td>Ticket Class : '. $curr_departure_trip['ticket_class']. '</td>';
}
}
好的,在更新您的问题后,我猜您不想将整个 HTML 块包装在 if 块中。为避免这种情况,只需将其翻转即可:
if($curr_departure_trips['ticket_class'] != $curr_return_trips['ticket_class'])
continue;
如果票 class 不同,您可以通过这种方式转到下一行。
我有一个从网络服务调用返回给我的数组。该数组如下所示:
$flights_data = array
(
'departure_trip_data' => array
(
0 => array('departure_date'=>'Mar 25, 2015', 'ticket_class'='Y'),
1 => array('departure_date'=>'Mar 25, 2015', 'ticket_class'='B'),
2 => array('departure_date'=>'Mar 25, 2015', 'ticket_class'='H'),
),
'return_trip_data' => array
(
0 => array('departure_date'=>'Mar 28, 2015', 'ticket_class'='Y'),
1 => array('departure_date'=>'Mar 28, 2015', 'ticket_class'='B'),
2 => array('departure_date'=>'Mar 28, 2015', 'ticket_class'='K'),
)
);
我是这样处理的:
<?php
$departure_trips = $flight_data['departure_trip_data'];
$return_trips = $flight_data['return_trip_data'];
?>
<?php for($i = 0; $i < count($departure_trips); $i++): ?>
<?php
$curr_departure_trip = $departure_trips[$i];
$curr_return_trip = $return_trips[$i];
?>
<td>Departure Date : <?php echo $curr_departure_trip['departure_date']; ?></td>
<td>Return Date : <?php echo $curr_return_trip['departure_date']; ?></td>
<td>Ticket Class : <?php echo $curr_departure_trip['ticket_class']; ?> </td>
<!-- long lines of plain HTML code goes here -->
<?php endfor; ?>
我的问题是:如何只显示 departure_trip_data
数组和 return_trip_data
数组中 ticket_class
值相同的情况的数据?非常感谢任何帮助。
您可以使用嵌套循环遍历数组并逐个比较,如果找到匹配则处理它
好吧,如果我没猜错的话,
for($i = 0; $i < count($departure_trips); $i++)
{
$curr_departure_trip = $departure_trips[$i];
$curr_return_trip = $return_trips[$i];
if($curr_departure_trips['ticket_class'] == $curr_return_trips['ticket_class']) {
echo '<td>Departure Date : '. $curr_departure_trip['departure_date']. '</td>';
echo '<td>Return Date : '. $curr_return_trip['departure_data']. '</td>';
echo '<td>Ticket Class : '. $curr_departure_trip['ticket_class']. '</td>';
}
}
好的,在更新您的问题后,我猜您不想将整个 HTML 块包装在 if 块中。为避免这种情况,只需将其翻转即可:
if($curr_departure_trips['ticket_class'] != $curr_return_trips['ticket_class'])
continue;
如果票 class 不同,您可以通过这种方式转到下一行。