1

検索のためにmysqlを照会するループがありますが、検索はクエリの終わりまでに変更されます。コーディングでわかったことは、変数を新しい検索クエリに再割り当てできない、またはとにかく正しくないということです。

エコーを追加して、それが何をしているかを確認しました。

ジョンが $preg_split に割り当てられているとしましょう

私がやろうとしているのは、たとえば J などのデータベースの最初の文字が一致する場合、文字をデータベースと一致させ、次に $pre_split から 2 番目の文字を割り当てることです。これは o であるため、$char は jo になります。

したがって、最初の変数 $char は jo で更新する必要があります

代わりに、何らかの理由で、コードを正しく記述していないと確信しているのは、それがエコーであるということです..

だから、なぜそれが最初のキャラクターではなく2番目のキャラクターなのか、少し困惑しています。

$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_splitloopの新しい反復ごとに の次の値に設定されるため、ループ内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 に答える