1

我有一个循环,它查询 mysql 进行搜索,但搜索将在查询结束时更改。我发现我的编码是我现在没有的是我无法将变量重新分配给新的搜索查询,或者无论如何都不正确。

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

假设 John 被分配到 $preg_split

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

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

相反,出于某种原因,我确信我只是没有正确编写代码,因为它回显不是 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];}

    }
4

1 回答 1

1

$char$NG_split在循环的每次新迭代中都设置为下一个值,因此您在循环foreach中分配的值将不再存在。你不能简单地这样做吗?$charforeach

<?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 中使用正则表达式可能有一种更有效的方法来获得您正在寻找的结果,但如果您可以分享一个更多关于你的用例。

于 2012-05-01T22:26:51.853 回答