2016-01-27 4 views
0

Мой код выглядит так:Как сохранить цикл в виде строки в переменной?

<?php 
     $HCode = 'IDJKT01'; 
     $CheckIn = '2016-02-01'; 
     $CheckOut = '2016-02-02'; 
     $Sgl = 1; 
     $Dbl = 0; 
     $Trp = 0; 
     $RmGrade = 'DELUXE'; 

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

          <Request> 

           <BookingRequest>     

            <HCode>".$HCode."</HCode> 

            <RmGrade>".$RmGrade."</RmGrade> 

            <CheckIn>".$CheckIn."</CheckIn> 

            <CheckOut>".$CheckOut."</CheckOut> 

            <Sgl>".$Sgl."</Sgl> 

            <Dbl>".$Dbl."</Dbl> 

            <Trp>".$Trp."</Trp> 

            <Passenger Room='SGL'> 

             <PassSex>M</PassSex> 

             <PassLocalNm>Becks</PassLocalNm> 

             <PassFirstNm> David </PassFirstNm> 

             <PassLastNm> Beckham</PassLastNm> 

            </Passenger> 

           </BookingRequest> 

          </Request>"; 
?> 

Я хочу, чтобы добавить цикл в строке.

Например, как указано выше, Если $ SGL = 1, то число пассажиров тега 1

Другие примеры, такие как $ SGL = 3, то число пассажиров тега 3

Другое примеры, такие как $ двойной = 1, то число пассажиров теге 2

Любая помощь очень ценится

Приветствия

+0

нормально и? вы что-нибудь пытались? –

+2

Вам нужно научиться строить строки, а затем: http://php.net/manual/en/language.operators.string.php –

ответ

1

Дайте этому попытку:

 $HCode = 'IDJKT01'; 
     $CheckIn = '2016-02-01'; 
     $CheckOut = '2016-02-02'; 
     $Sgl = 0; 
     $Dbl = 1; 
     $Trp = 0; 
     $RmGrade = 'DELUXE'; 

     $xml = "<?xml version='1.0' encoding='utf-8' ?>\n". 
       "\t<Request>\n". 
       "\t\t<BookingRequest>\n". 
       "\t\t\t<HCode>".$HCode."</HCode>\n". 
       "\t\t\t<RmGrade>".$RmGrade."</RmGrade>\n". 
       "\t\t\t<CheckIn>".$CheckIn."</CheckIn>\n". 
       "\t\t\t<CheckOut>".$CheckOut."</CheckOut> \n". 
       "\t\t\t<Sgl>".$Sgl."</Sgl>\n". 
       "\t\t\t<Dbl>".$Dbl."</Dbl> \n". 
       "\t\t\t<Trp>".$Trp."</Trp>\n"; 
for($i=0; $i< ($Sgl ? 1 : ($Dbl ? 2 : ($Trp ? 3 : 0))); $i++) { 
     $xml .= "\t\t\t<Passenger Room=".($Sgl ? "'SGL'" : ($Dbl ? "'DBL'" : ($Trp ? "'TRP'" : "'SGL'"))).">\n". 
       "\t\t\t\t<PassSex>M</PassSex>\n". 
       "\t\t\t\t<PassLocalNm>Becks</PassLocalNm>\n". 
       "\t\t\t\t<PassFirstNm>David</PassFirstNm>\n". 
       "\t\t\t\t<PassLastNm>Beckham</PassLastNm>\n". 
       "\t\t\t</Passenger>\n"; 
} 
$xml .= "\t\t</BookingRequest>\n". 
     "</Request>"; 

Результат:

<Request> 
     <BookingRequest> 
      <HCode>IDJKT01</HCode> 
      <RMGrade>DELUXE</RMGrade> 
      <CheckIn>2016-02-01</CheckIn> 
      <CheckOut>2016-02-02</CheckOut> 
      <Sgl>0</Sgl> 
      <Dbl>1</Dbl> 
      <Trp>0</Trp> 
      <Passenger Room="DBL"> 
       <PassSex>M</PassSex> 
       <PassLocalNm>Becks</PassLocalNm> 
       <PassFirstNm>David</PassFirstNm> 
       <PassLastNm>Beckham</PassLastNm> 
      </Passenger> 
      <Passenger Room="DBL"> 
       <PassSex>M</PassSex> 
       <PassLocalNm>Becks</PassLocalNm> 
       <PassFirstNm>David</PassFirstNm> 
       <PassLastNm>Beckham</PassLastNm> 
      </Passenger> 
     </BookingRequest> 
</Request> 

Лично я бы переформатировать XML, как это:

<Request> 
     <BookingRequest> 
      <HCode>IDJKT01</HCode> 
      <RMGrade>DELUXE</RMGrade> 
      <CheckIn>2016-02-01</CheckIn> 
      <CheckOut>2016-02-02</CheckOut> 
      <Sgl>0</Sgl> 
      <Dbl>1</Dbl> 
      <Trp>0</Trp> 
      <Passengers> 
       <Passenger Room="DBL"> 
        <PassSex>M</PassSex> 
        <PassLocalNm>Becks</PassLocalNm> 
        <PassFirstNm>David</PassFirstNm> 
        <PassLastNm>Beckham</PassLastNm> 
       </Passenger> 
       <Passenger Room="DBL"> 
        <PassSex>M</PassSex> 
        <PassLocalNm>Becks</PassLocalNm> 
        <PassFirstNm>David</PassFirstNm> 
        <PassLastNm>Beckham</PassLastNm> 
       </Passenger> 
      </Passengers> 
     </BookingRequest> 
</Request> 
Смежные вопросы