2012-05-01 159 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