2012-05-01 193 views
1

的開始,我有一個循環,它查詢的MySQL的一個搜索,但搜索將被查詢的結束而改變。 我發現與我的編碼是我現在不是,我不能重新分配一個變量到一個新的搜索查詢,或反正不正確。PHP的foreach循環succesfull重新分配一個變量循環

我已經加入回聲的,看看它在做什麼。

比方說,約翰被分配到$使preg_split

我所試圖做的是一個性格與數據庫匹配,如果一個數據庫中的第一個字符的比例j匹配,那麼從$ pre_split分配第二個字符這爲鄰所以$字符將曹某

所以在開始的時候變量$字符應與喬

而是出於某種原因,我敢肯定,我只是沒有寫我的代碼正確的是更新它回聲爲O的不是喬..

所以我有點困惑爲什麼它的第二個字符,而不是第一個。

$NG_implode = implode("", $preg_split); 

$NG_split = str_split($NG_implode, 1); 
$i = '0'; 
$ia = '1'; 
$ib = '0'; 
$ic = '1'; 
$char = $NG_split[$ib]; 


foreach ($NG_split as $char) 
{ 

    $NG_select_like = "SELECT word FROM checklist_filter WHERE word LIKE '".$char."%'"; 
    $NG_query = mysql_query($NG_select_like) or die(mysql_error()); 
    $NG_row = mysql_fetch_row($NG_query); 
    $chars = str_split($char, 1); 
    $row = str_split($NG_row[0], 1); 
     if ($chars[$i] == $row[$i]) 
     { 

      $char = $char.$NG_split[$ia]; 

      $ia++; 
      $i++; 
      if ($char == $NG_row[0]){break;} 
      }else{$ib++; $char = $NG_split[$ib];} 

    } 

回答

1

$char被設置爲$NG_splitforeach循環的每一個新的迭代的下一個值,讓你在你的foreach循環內分配給$char值下一次會不會存在了。你不能簡單地這樣做嗎?

<?php 
$str = "John"; 
$len = strlen($str); 

$arr = array(); 
$i = 0; 
while($i < $len) { 
    $arr[] = substr($str,0,$len-$i); 
    $i++; 
} 

var_dump($arr); 
?> 

現在,如果你遍歷$arr你應該能夠建立你感興趣的查詢。有可能是一個更有效的方式來獲得您希望使用MySQL中的正則表達式的結果,但如果你能分享一些關於你的用例的話,這將有所幫助。

+1

你好大安,感謝您的解釋,的foreach的理解做出了配發的東西更容易理解。我現在試着利用while循環,看看我可以如何工作。我會回覆最後的結果分享信息。謝謝:) – SmileyWar

+0

我以你的例子和我的情況得出了結論,儘管作品很完美,非常感謝你的幫助$ x ='0'; \t echo'step - '。$ x。'
'; \t做{ \t \t回聲 '一步 - ' $ X「。
'; \t \t $ X =($ X + '1'); \t \t echo'step - '。$ x。'
'; \t \t echo'end step
'; \t \t} while($ x <='5'); – SmileyWar