PHP foreach成功循环在循环开始时重新分配变量

时间:2012-05-01 22:13:04

标签: php mysql

我有一个循环,它查询mysql进行搜索,但搜索将在查询结束时发生变化。 我发现我的编码是我现在没有的,我不能将变量重新分配给新的搜索查询,或者不正确。

我添加了回声来看看它在做什么。

让我们说John被分配到$ preg_split

我想要做的是将一个字符与数据库匹配,如果数据库中的第一个字符(例如J匹配)然后从$ pre_split分配第二个字符,那么$ char将是jo

所以开头的变量$ char应该用jo

更新

相反,由于某种原因,我确信我只是没有把我的代码写得正确,因为它回应了一个不是...

所以我有点困惑为什么它是第二个角色而不是第一个角色。

$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 个答案:

答案 0 :(得分:1)

$char循环的每个新迭代中,

$NG_split设置为foreach的下一个值,因此您在{$char内分配给foreach的值1}}循环将不再存在下次。你不能简单地这样做吗?

<?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中使用正则表达式寻找的结果但是如果您可以为此分享更多关于您的用例的信息,将会有所帮助。