参照ページで用語を検索し、それらの用語の存在に基づいて関数を実行するphp関数を作成しようとしています。
基本的なコードの作成は問題ではありませんでしたが、かなりの数の単語とオプションのアクションがあるため、単語/機能のグループごとに個別の行を使用してスクリプトが非常に長くなります。基本的なコードの概念は次のとおりです。ストライプ関数は優先順位が逆になっているため、2つ以上の用語が表示された場合、最も重要な用語が最後になり、前の用語よりも優先されます。
(最初の条件が満たされた後にスクリプトを終了する方法があると思いますが、終了の実験が失敗したため、逆シーケンスを使用しました)。
group1 = array("word1","word2","word3","word4","word5");
group2 = array("word6","word7","word8");
group3 ... etc
foreach($group1 as $groupa) { if(stripos($string, $groupa) !== false) { do something A; } }
foreach($group2 as $groupb) { if(stripos($string, $groupb) !== false) { do something B; } }
foreach ... etc
2次元配列または2つの配列を使用する方法はありますか?1つは単語を使用し、もう1つはアクションを使用しますか?すなわち:
words = array("word1","word2","word3","word4","word5","word6","word7","word8")
actions = array("something A","something A","something A","something A","something A","something B","something B","something B")
foreach($words as $word) { if(stripos($string, $word) !== false) { do actions; } }
...... 更新しました ......
フィリップスの提案に触発されて、私たちは多次元配列に行き着き、次にその「行」をステップスルーしました。現在、コードで配列を書き出すのではなく、MySQLから配列をフェッチする作業を行っています。
$terms = array(
array( "word" => "word1",
"cat" => "dstn",
"value" => "XXXX"
),
..etc
..etc
);
foreach ($terms as $i => $row)
{ if(stripos($refstring3, $row['word']) !== false) { $$row['cat'] = $row['value']; } }
...... 更新しました ......
単純なMySQLクエリに進化し、その後にforeachではなくwhileステートメントが続きます。Stackoverflowに関するフィードバックやその他のさまざまな投稿のおかげで、魅力のように機能します。
ありがとうございます。
この場所は学習と理解に最適です。投稿は物事の本質に直接ジャンプし、関連しているが適用できない多数のチュートリアルを検索する必要はありません。