results_array という名前の配列があります。
var_dump($results_array):
0 => php,mysql,jquery,ruby,html,css,lamp
1 => mouse,keyboard,laptop,pad
2 => table,sofa,caption
3 => control,television,control television,television control
クエリを表す$qがあります。$results_array を検索し、クエリとは関係のない項目を削除したいので、設定した場合$q=a
、結果配列は次のようになります。
0 => lamp
1 => keyboard,laptop,pad
3 => table,sofa,caption
4 => empty
ここで、上記の結果を results_array の各インデックスに入れたいと思います。最後に、results_array は次のようになります。
0 => lamp
1 => keyboard
2 => laptop
3 => pad
4 => table
5 => sofa
6 => caption
私のコードは次のとおりです。
foreach($results_array as &$row) {
$row = explode(',', $row);
}
unset($row);
$results_array = call_user_func_array('array_merge_recursive', $results_array);
foreach ($array as $k => $v) {
if(strpos($v, 'a') === false) unset($array[$k]);
}
$results_array = array_values($results_array);
これはまさに私が必要とすることを行います。今、$q = 'tele co' を設定し、上記のコード set $ = 'tele co' を適用した後、空を返しますが、次の理由でそうすべきではありません:
3 => control,television,control television,television control
'control TV,television control' が返されるはずですが、返されないため、コードを次のように変更します。
foreach($results_array as &$row) {
$row = explode(',', $row);
}
unset($row);
$results_array = call_user_func_array('array_merge_recursive', $results_array);
// HERE IS CHANGED ****
$q = preg_split('/\s+/', trim($q));
foreach ($results_array as $key => $value) {
foreach ($q as $query) {
if (stripos($value, $query) === false) {
unset($results_array[$key]);
break;
}
}
}
// ****
$results_array = array_values($results_array);
$q = 'tele co' を渡すことで、まだ機能していません。$q にある 'tele' と 'co' の両方を取得したため、'television control' と 'control TV' が返される必要があります。
どんな種類の助けにも感謝します