iT邦幫忙

0

PHP 迴圈過號問題

php
  • 分享至 

  • twitterImage
do{
     if(($city_object->county_code-1) == $i){
          foreach($city_object as $key => $value){
              $new_city_object[urlencode($key)] = urlencode($value);
          }       
          array_push($new_state_object[$county][$i][$city],$new_city_object);    
     }  
    }while($city_object = mysqli_fetch_object($city_result));     //city層
    mysqli_data_seek($city_result,$i);
    $i++;

我用do while 做了一個迴圈,我必須先取得值($city_object = mysqli_fetch_object($city_result))才能判斷是否要放入陣列裡面,但是判斷完後如果是false,那這筆資料不會放入陣列,下次近來也不會再跑一次這筆資料(等同於不見了)。只要每次false出現,就會少一筆資料。有甚麼方法可以解決嗎?

這個迴圈外還有一個迴圈

柯柯 iT邦新手 3 級 ‧ 2019-09-25 10:29:47 檢舉
if(($city_object->county_code-1) == $i){
}else{
array_push($new_state_object[$county][$county][$city];
}
多一個else ?
豬豬人 iT邦新手 4 級 ‧ 2019-09-25 10:35:17 檢舉
抱歉,不是很懂,可以再寫清楚一點嗎?麻煩了
柯柯 iT邦新手 3 級 ‧ 2019-09-25 10:38:17 檢舉
就是在判斷county-1 == $i的時候 才會把資料push到array 裡面
如果county-1 != $i 的時候 額外處理資料

不過我覺得 應該 可以改成
while($city_object = mysqli_fetch_object($city_result)){
$row[] = $city_object ;
}
foreach($row as $k => $v){ array_push() }
這樣去整理資料
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0

說真的。看完你這段我真的會昏頭就是了。
我真不知道該叫你從何改起就是了。

先不要說使不使用pdo的問題好了。
你的問題並不是程式上的問題。而是邏輯上的問題。

依你的程式而言用幾個說明。
1.為何一個現成需要的資料。不直接用while。偏偏用do .. while???

2.一個取得指定資料但沒使用??這是啥??

也就是說,其實你目前的情況,不清不楚。問題也不清楚,程式碼也不清楚。
我會建議你先自已了解一下該如何說你的需求。並思考一下程式的應用寫法。

最後給你的建議,你目前的程式,並沒有修改的必要。
因為不用改了,直接打掉重寫邏輯。
我說話很毒,但相信我,你這樣的程式碼會活不久的。以後會生蟲生不完的。

ccutmis iT邦高手 2 級 ‧ 2019-09-25 10:51:55 檢舉

/images/emoticon/emoticon01.gif : 生蟲生不完 可以改行 賣蟲維生!

/images/emoticon/emoticon05.gif

甲土豆 iT邦新手 5 級 ‧ 2019-09-26 13:50:07 檢舉

/images/emoticon/emoticon12.gif

0
firecold
iT邦新手 1 級 ‧ 2019-09-26 10:08:54

觀落陰一波

內外迴圈調換一下
就不會有漏掉的問題

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-09-26 11:01:37

我用do while 做了一個迴圈,我必須先取得值($city_object = mysqli_fetch_object($city_result))才能判斷是否要放入陣列裡面

一般的做法
mysqli_fetch_object 都是全部跑過一輪
不管你要做什麼判斷
都寫在迴圈裡面
基本範例如下

 <?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql="SELECT Lastname,Age FROM Persons ORDER BY Lastname";

if ($result=mysqli_query($con,$sql))
  {
  while ($obj=mysqli_fetch_object($result))
    {
       if($city_object==$obj) {
           //放到陣列裡面
       }
    }
  // Free result set
  mysqli_free_result($result);
}

mysqli_close($con);
?> 

我要發表回答

立即登入回答