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'];