2017-09-11 10 views
0

アレイの特定のエントリを手動でマークして(必要に応じてデータベース内の特定のエントリを強調表示して)、それらを検出して別々に扱えるようにする場合。私はこれを行う理想的な方法が何であるか疑問に思っていますか?すなわち、最も速い(パフォーマンス志向の)、最も効率的です。現在、私はこのようにそれをやっている:あなたはその私が手動で追加したエントリを検出見ることができるようにPHP:配列内の項目をマークする最も良い方法は何ですか?

if (strpos($string,' >')!==false) {//action//} 

アレイ:

"A"=>"yes", 
"B"=>"no >", 
"C"=>"why", 

コードは次のようにそれを検出し、 >を。しかしその迷惑な文字はstr_replaceで取り除かなければならないので、あまりにも面倒です。

+2

選択した項目のインデックスを別の配列に保存してみませんか?リレーショナルデータベースの場合は、何かが選択されていることを示す値を変更しないでください。何かが選択されていることを示す別の列が必要です。 – Devon

+0

^with http://php.net/manual/en/function.in-array.php – chris85

+0

あなたは配列とデータベースのコンセプトを混在させているようです。このような情報は、別のテーブルに保管しておく必要があります。スクリプトロジック内の配列の場合は、追加のテーブル情報を保持する2番目の配列を持つことが理にかなっています。 – arkascha

答えて

0

回答の配列を作成します。

質問:

$array = [ 
    "A" => "yes" 
    "B" => "no" //this is the correct result. 
    "C" => "why" 
] 

$answer = [ 
    0 => "B"; 
] 

そして、いくつかの比較ロジックを実行します。配列のforeach値を正しい答えと照合してください:

foreach($array as $key => $value){ 
    if(in_array($key, $answer)){ 
     // this is the correct answer. So process. 
     $correct = "The correct answer is ".$key." : '".$value."'"; 
    } 
} 
unset($key,$value); 

print $correct; // "The correct answer is B : 'no'" 
+0

おかげさまでいいです、なぜこのように良いのか説明できますか?たとえば、毎回アイテムにマークを付けるのに時間がかかるようです。エントリを追加するだけでなく、新しいエントリを追加する0 => "B" – Hasen

+0

あなたは1つまたは複数の質問の配列と1つの答えの配列を持っています。彼らがマッチするところはマッチです!複数の質問があると思いますので、これはボード全体に適用できます – Martin

関連する問題