如果给出来自同一数组的特定值,如何从php数组中提取数据

时间:2015-01-15 12:22:56

标签: php arrays xml json

我想根据给定的信息从PHP数组中提取信息。

PHP代码

$xmlstring = file_get_contents('file.xml');
$xml = simplexml_load_string($xmlstring);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
$HotelCodes = array('BG01I9', 'BG53I4', 'BG23I7');
$code = $HotelCodes[1];
if (!$code) {
   throw new Exception("No Hotel Code specified");
}
foreach ($HotelCodes as $code) {
  foreach ($hotels as $hotel) {
    if (strcasecmp($hotel['HotelCode'], $code) === 0) {
        echo "{$hotel['Latitude']}:{$hotel['Longitude']}<br/>";
        foreach ($hotel['HotelImages']['ImageUrl'] as $img) {
            echo "<img src='{$img}'/><hr/>";
        }
        break;
    }
  }
}
带有一条记录的

print_r $array(数组有多条记录):

Array
( 
    [Hotel] => Array 
  ( 
[0] => Array ( 
     [HotelCode] => BG01I9 
     [Latitude] => 42.6039 
     [Longitude] => 23.3954 
     [HotelImages] => Array ( 
           [ImageURL] => Array ( 
                        [0] => http://image.metglobal.com/hotelimages/BG01I9/6481077_0x0.jpg 
                        [1] => http://image.metglobal.com/hotelimages/BG01I9/6481092_0x0.jpg 
                        [2] => http://image.metglobal.com/hotelimages/BG01I9/6481109_0x0.jpg 
                        [3] => http://image.metglobal.com/hotelimages/BG01I9/6481139_0x0.jpg 
                        [4] => http://image.metglobal.com/hotelimages/BG01I9/6481163_0x0.jpg 
                        [5] => http://image.metglobal.com/hotelimages/BG01I9/6480990_0x0.jpg 
                        [6] => http://image.metglobal.com/hotelimages/BG01I9/6481002_0x0.jpg 
                        [7] => http://image.metglobal.com/hotelimages/BG01I9/6481015_0x0.jpg 
                        [8] => http://image.metglobal.com/hotelimages/BG01I9/6481033_0x0.jpg 
                        [9] => http://image.metglobal.com/hotelimages/BG01I9/6481058_0x0.jpg 
   ) 
  ) 
 ) 
)

我希望根据我提供的HotelCodes回应酒店图片,纬度和经度: 酒店代码为$HotelCodes[0]

收到的错误是:

Fatal error: Uncaught exception 'Exception' with message 'No Hotel Code specified' in /home/truckass/public_html/site/test/teste.php:10 Stack trace: #0 {main} thrown in /home/truckass/public_html/siteo/test/teste.php on line 10

我需要回复HotelCodes[1]

$img[1][0] ....$img[1][5] 
$Latitude[1]
$Longitude[1]

请你帮忙。

1 个答案:

答案 0 :(得分:1)

这是错误的:

$HotelCodes[] = array('BG01I9', 'BG53I4', 'BG23I7');

您应该省略第一个括号:

$HotelCodes = array('BG01I9', 'BG53I4', 'BG23I7');

您现在可以使用$HotelCodes[1]访问第二个代码。

在您的代码段中,您创建了一个包含数组的数组。这本身就完全有效,但是您应该使用$HotelCodes[0][1]

来访问该值

如果你想坚持方括号,你可以这样做(&gt; = 5.4):

$HotelCodes = ['BG01I9', 'BG53I4', 'BG23I7'];