Heim >Backend-Entwicklung >PHP-Tutorial >PHP搜索 $keyword结果同时等于另一个结果

PHP搜索 $keyword结果同时等于另一个结果

WBOY
WBOYOriginal
2016-06-23 13:48:131502Durchsuche

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 提交 $keyword数据为 25*50
经过下面方法得出的结果也显示50*20  但是继续搜索25*50*2.5 就只会出现25*50*2.5 不会出现50*25*2.5

$cArr = array();
if(!empty($keyword)){
    $cArr['keyword'] = $keyword;
}
require_once('/config.search.php');
$skeys=array_keys($s_replaceArr);
if(@$s_replaceArr[$keyword])
  {
 $cArr['keyword'] =$s_replaceArr[$keyword]['single'];
  }else{
 $eregpatt=implode('|',$skeys);
preg_match_all("/^($eregpatt)/", $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);
     }
         
     $cArr['keyword']=implode(" ",$keywordArr);
}
   
}
config.search.php数据为 
$s_replaceArr=Array(
 '20*40' => array(
                       'single'=>'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' => array(
                       'single'=>'25*50 50*25',
                       'mixed'=>array('25*50','50*25')
                       ),
 '50*25' => array(
                       'single'=>'50*25 25*50',
                       'mixed'=>array('25*50','50*25')
                       )
);
?>
我25*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'];

终于成功了,再次感谢版主

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:php 如何让select 被选中Nächster Artikel:看这段简单的代码?