多维数组:仅显示来自不同数组的相同键具有相同值的数据

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 不同,您可以通过这种方式转到下一行。