Результат цикла php - PullRequest
       11

Результат цикла php

0 голосов
/ 26 декабря 2011
for($x=1;$x<=$total_room;$x++)
    {
     if($x%10==0){echo  '</br>';}
        foreach($room_status as $a=>$v)
        {
            $r = $v->room_no;
            if($x == $r)
            {
echo '<img src="'.SITE_NAME.IMAGE_DIR.'hotel_img/book.png"'.'height="25" width="25" >';
                $x++;
            }

        }
        if($x<=$total_room)
        {
        echo '|'.$x.'|' ;
        }
    }

В приведенном выше цикле $ tootal_room это число И $ room_status is и массив объекта var_dump этого массива дают мне результат следующим образом

 0 => 
    object(stdClass)[8]
      public 'hotel_id' => string '1' (length=1)
      public 'room_no' => string '1' (length=1)
      public 'start_date' => string '2011-12-14' (length=10)
      public 'end_date' => string '2011-12-31' (length=10)
      public 'room_type' => string 'normal' (length=6)
  1 => 
    object(stdClass)[6]
      public 'hotel_id' => string '1' (length=1)
      public 'room_no' => string '5' (length=1)
      public 'start_date' => string '2011-12-14' (length=10)
      public 'end_date' => string '2011-12-31' (length=10)
      public 'room_type' => string 'normal' (length=6)
  2 => 
    object(stdClass)[9]
      public 'hotel_id' => string '1' (length=1)
      public 'room_no' => string '11' (length=2)
      public 'start_date' => string '2011-12-14' (length=10)
      public 'end_date' => string '2011-12-31' (length=10)
      public 'room_type' => string 'normal' (length=6)
  3 => 
    object(stdClass)[10]
      public 'hotel_id' => string '1' (length=1)
      public 'room_no' => string '8' (length=1)
      public 'start_date' => string '2011-12-14' (length=10)
      public 'end_date' => string '2011-12-31' (length=10)
      public 'room_type' => string 'normal' (length=6)
  4 => 
    object(stdClass)[11]
      public 'hotel_id' => string '1' (length=1)
      public 'room_no' => string '9' (length=1)
      public 'start_date' => string '2011-12-14' (length=10)
      public 'end_date' => string '2011-12-31' (length=10)
      public 'room_type' => string 'normal' (length=6)
  5 => 
    object(stdClass)[12]
      public 'hotel_id' => string '1' (length=1)
      public 'room_no' => string '4' (length=1)
      public 'start_date' => string '2011-12-14' (length=10)
      public 'end_date' => string '2011-12-31' (length=10)
      public 'room_type' => string 'normal' (length=6)
  6 => 
    object(stdClass)[13]
      public 'hotel_id' => string '1' (length=1)
      public 'room_no' => string '2' (length=1)
      public 'start_date' => string '2011-12-14' (length=10)
      public 'end_date' => string '2011-12-31' (length=10)
      public 'room_type' => string 'normal' (length=6)
  7 => 
    object(stdClass)[14]
      public 'hotel_id' => string '1' (length=1)
      public 'room_no' => string '7' (length=1)
      public 'start_date' => string '2011-12-14' (length=10)
      public 'end_date' => string '2011-12-31' (length=10)
      public 'room_type' => string 'normal' (length=6)

этот цикл for не дает ожидаемого результата для room_no 5,8 и т. Д., В чем здесь может быть ошибка

Ответы [ 2 ]

0 голосов
/ 26 декабря 2011
usort($room_status,function ($a,$b){
    if( $a->room_no==$b->room_no ){
        return 0;
    }elseif( $a->room_no<$b->room_no ){
        return -1;
    }else{
        return 1;
    }
});

for( $i=0,$c=count($room_status);$i<$c;$i++ ){
    echo '<img src="'.SITE_NAME.IMAGE_DIR.'hotel_img/book.png"'.'height="25" width="25" >|'.$room_status[$i]->room_no.'|';
}
0 голосов
/ 26 декабря 2011

Вы используете X в качестве счетчика цикла и изменяете X внутри цикла.Для каждой совпавшей комнаты вы пропускаете хотя бы одну запись, увеличивая x в своем тесте:

if ($x == $r) {
   ...
   $x++;
}

, поэтому, если $ x соответствует (скажем) 3, вы меняете его на 4. Затем циклснова катится и PHP увеличивает x до 5, и вы пропустили тестирование # 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...