ホームページ  >  記事  >  バックエンド開発  >  PHP 検索 $keyword の結果が別の結果と等しい

PHP 検索 $keyword の結果が別の結果と等しい

WBOY
WBOYオリジナル
2016-06-23 13:48:131476ブラウズ

PHP+mysql 例えば、$keyword 25*50 というキーワードを検索したいのですが、25*50 と 50*25 の結果が同時に表示され、続いて 25*50*2.5 を検索します。 , 50*25*2.5の結果も表示されます。 (後ほど25*50*1.1~25*50*4.75もあります)
PHPではどのような判断や方法が必要なのか。


ディスカッションに返信(解決策)

テストデータを提供してください

get Submit $keyword データは 25*50
以下の方法で得られた結果も 50*20 と表示されますが、引き続き 25* を検索します50*2.5 25*50*2.5 のみが表示され、50*25*2.5 は表示されません

$cArr = array();
if(!empty($keyword)){
$cArr['keyword'] = $キーワード;
}
require_once('/config.search.php');
$skeys=array_keys($s_replaceArr);
{
$cArr['keyword'] =$ s_replaceArr[$ キーワード]['single'];
}else{
$eregpatt=implode('|',$skeys);
preg_match_all("/^($keyword,$res); //print_r ($res);
if($res[1]){
$keywordArr=array();
foreach($s_replaceArr[$res[1][0]]['mixed'] as $svalue)
{
$keywordArr[]=preg_replace("/{$res[1][0]}/",$svalue,$keyword,1);
$keywordArr );
}

}
config.search.phpデータは
0e04da7188a03116bcf1ac8eed881b0b array(
=>'20*40 40* 20',
'mixed'=>array('20*40 ','40*20')
'40*20' => array(
'single'=>'40*20 20 *40',
'mixed'=>array('20*40', '40*20 ')'25*50' =>
5*50 以降はたくさんの組み合わせがありますが、すべてを検討するのは面倒です config.search.php に書き込みます 何か良い方法はありますか? モデレーターありがとうございます


あなたが望んでいることはこれです。

$key = '20*50*30';$arr = explode('*', $key);print_r(Arrangement($arr));//排列 Arrangementfunction Arrangement($arr = array(), $res = '') {  if(! is_array($arr) ) $arr = str_split($arr);  if(empty($arr)) $array[] = $res;  else foreach($arr AS $k => $v) {    unset($arr[$k]);    foreach( Arrangement($arr, trim("$res*$v", '*')) AS $t) $array[] = $t;    $arr[$k]    = $v;  }  return  $array;}
Array(    [0] => 20*50*30    [1] => 20*30*50    [2] => 50*30*20    [3] => 50*20*30    [4] => 30*20*50    [5] => 30*50*20)


モデレーターはモデレーターです。文章はとても上手です
最後の質問は、この配列をどうやって受け取るかです
  $arr=Array(    "[0]" => "20*50*30",    "[1]" => "20*30*50",    "[2]" => "50*30*20",    "[3]" => "50*20*30",    "[4]" => "30*20*50",    "[5]" => "30*50*20",	"[6]" => "25*50*25");$key = "25*50*2.5";$arr = explode('*', $key);//print_r(Arrangement($arr)); //排列 Arrangementfunction Arrangement($arr = array(), $res = '') {  if(! is_array($arr) ) $arr = str_split($arr);  if(empty($arr)) $array[] = $res;  else foreach($arr AS $k => $v) {    unset($arr[$k]);    foreach( Arrangement($arr, trim("$res*$v", '*')) AS $t) $array[] = $t;    $arr[$k] = $v;  }  return  $array;}

Array ( [0] => 25*50*2.5 [1] => 25*2.5*50 [2] => 50*2.5*25 [3] => 50*25*2.5 [4] => 2.5*25*50 [5] => 2.5*50*25 ) 变成:$cArr['keyword'] = 25*50*2.5 25*2.5*50  50*2.5*25 50*25*2.5 2.5*25*50 2.5*50*25 ;

モデレーターに感謝します

モデレーターはモデレーターです。サポートしてください。

$key = $keyword;$arr = explode('*', $key);//print_r(Arrangement($arr)); //排列 Arrangementfunction Arrangement($arr = array(), $res = '') {  if(! is_array($arr) ) $arr = str_split($arr);  if(empty($arr)) $array[] = $res;  else foreach($arr AS $k => $v) {    unset($arr[$k]);    foreach( Arrangement($arr, trim("$res*$v", '*')) AS $t)			$array[] = $t; $arr[$k] = $v;	  }	  return  $array;	  	 	}$aarray = Arrangement($arr);$cArr['keyword']=implode(" ",$aarray);echo $cArr['keyword'];

ついに成功しました、モデレーターに改めて感謝します

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。