【问题标题】:How to display xml tag dynamically the corresponding input array?如何动态显示xml标签对应的输入数组?
【发布时间】:2016-01-30 00:22:31
【问题描述】:

我的代码是这样的:http://pastebin.com/G74JY27f

<?php
$param = array('sex'=>'Mr.',
  'family_name'=>'Mourinho',
  'first_name'=>'Jose',
  'booking_phone'=>'123456',
  'booking_mobile'=>'123',
  'booking_email'=>'mourinho@gmail.com',
  'passenger_sex'=>array(
    'Sgl'=>array('Mr.'),
    'Dbl'=>array('Mr.','Mr.','Mr.','Mr.'),
  ),
  'passenger_family_name'=>array(
    'Sgl'=>array('Bale'),
    'Dbl'=>array('Hazard','Ronaldo','Messi','Beckham'),
  ),
  'passenger_first_name'=>array(
    'Sgl'=>array('Gareth'),
    'Dbl'=>array('Eden','Christiano','Lionel','David'),
  )
);

echo '<pre>';print_r($param);echo '</pre>';

$xml = "<?xml version='1.0' encoding='utf-8' ?>

  <Request>

    <BookingRequest>                            

      <Name>".$param['first_name']."</Name>

      <Email>".$param['booking_email']."</Email>

      <Phone>".$param['booking_phone']."</Phone>

      <MPhone>".$param['booking_mobile']."</MPhone>

      <Passenger Room='SGL'>

        <PassSex>Mr</PassSex>

        <PassLocalNm>Gareth</PassLocalNm>

        <PassFirstNm> Gareth </PassFirstNm>

        <PassLastNm> Bale</PassLastNm>

      </Passenger>  

    </BookingRequest>

  </Request>";

$json = json_encode($xml);
$response_array = json_decode($json,TRUE);
print_r($response_array);
die();
?>

print_r($param)的结果,是一个数组

print_r($response_array)的结果,就是xml

xml中的name标签、email标签、phone标签和mphone标签,根据数组中的数据进行排序

但问题是乘客标签,它仍然是静态的

好像在用foreach,但我还是一头雾水

结果会有五个乘客标签

所以我想要这样的输出http://pastebin.com/t380Aits

如何排序输出看起来像上面的链接?

【问题讨论】:

    标签: php html arrays xml


    【解决方案1】:

    您可以使用 foreach 循环将乘客标签添加到 xml 变量中。

    您可以通过循环遍历多维参数之一,然后遍历值并使用每个数组的键从其他数组中获取相关数据来实现。

    有关如何执行此操作的示例,请参阅下面的工作代码。

    $xml = "<?xml version='1.0' encoding='utf-8' ?>
    
        <Request>
    
            <BookingRequest>                              
    
                <Name>".$param['first_name']."</Name> 
    
                <Email>".$param['booking_email']."</Email> 
    
                <Phone>".$param['booking_phone']."</Phone> 
    
                <MPhone>".$param['booking_mobile']."</MPhone>
    ";
    // loop through one of the multi dimensional arrays
    foreach ($param['passenger_sex'] as $type => $values)
    {
        // loop through all values and add a Passenger record to $xml
        foreach ($values as $key => $val)
        {
            // use the $type array key, and the $key from the second loop to get the values
            $xml .= "
                <Passenger Room='".$type."'>
    
                    <PassSex>".$param['passenger_sex'][$type][$key]."</PassSex>
    
                    <PassLocalNm>".$param['passenger_first_name'][$type][$key]."</PassLocalNm>
    
                    <PassFirstNm> ".$param['passenger_first_name'][$type][$key]." </PassFirstNm>
    
                    <PassLastNm> ".$param['passenger_family_name'][$type][$key]."</PassLastNm>
    
                </Passenger>
    ";
        }
    }
    // add the closing tags to the xml string
    $xml .= "
            </BookingRequest>
    
        </Request>";
    

    【讨论】:

    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 2017-11-01
    • 2013-07-30
    • 2019-11-07
    • 2017-02-22
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    相关资源
    最近更新 更多