分类信息自定义搜索url怎么处理?

tangguowei 2009-11-30 03:21:05
问题是这样的,如图
...全文
160 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
x1987xiaoxiao 2009-12-01
  • 打赏
  • 举报
回复
9楼的回复忽略吧 (0_0)!!!
x1987xiaoxiao 2009-12-01
  • 打赏
  • 举报
回复
运行了下,url出现二维数组的情况:
$url_arr1=array(str_replace("$$key1",$key2,$Temp_arr)); 这句,
因为你传入的str_replace("$$key1",$key2,$Temp_arr)是一个字符串,虽然你里面是以数组'type'=>$type,'price'=>$price 但是统一的就是一个字符串然后这里生产的$url_arr1就是[0]=>'type'=>$type,'price'=>$price
这样了:
解决方法(可试):
在foreach循环外申明$Temp_arr是一个数组$Temp_arr=Array();在foreach中$Temp_arr['$field']='$$field'这样来生产 这样生产的$Temp_arr就是一个数组了……(如果这样运行这后,之后的那个替换,估计要换个)
x1987xiaoxiao 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tangguowei 的回复:]
我不清楚什么是笛卡尔集啊,我这样处理了一下
foreach(条件)
....
$Temp_arr.="'$field'=>$$field,";
}
$Temp_arr = substr($Temp_arr,0,strlen($Temp_arr)-1);//去掉最后一个,号此时$Temp_arr为
'type'=>$type,'price'=>$price

if (is_array($arr)){
foreach ($arr as $key1=>$val){
  foreach($val as $key2=>$val2){
$url_arr1=array(str_replace("$$key1",$key2,$Temp_arr));
$url_arr2=array('catid'=>$catid,'areaid'=>$areaid,'page'=>$page);
$url = array_merge($url_arr1, $url_arr2);
  $search[$key1][]=array('value'=>$key2,'name'=>$val2,'url'=>$url);
print_r($url);exit;
  }
}
}
为什么输出的url为Array ( [0] => 'type'=>1,'price'=>$price [catid] => 13 [areaid] => [page] => 1 )
而不是:Array ([type]=>1[price]=>$price[catid] => 13 [areaid] => [page] => 1 )
[/Quote]

$search[$key1][]=array('value'=>$key2,'name'=>$val2,'url'=>$url); 设置的url指向的是一个数组了
如果输出url 肯定就是一个数组
这样整个是一个一维的数组:
$url = array_merge($url_arr1, $url_arr2);
$arr=array('value'=>$key2,'name'=>$val2);
$search[$key1][]=array_merge($arr,$url);
或是:
得到url之后,对它这个数组进行单独的操作
「已注销」 2009-11-30
  • 打赏
  • 举报
回复
$arr= Array(
'type' => Array (
'1' => '出售',
'2' => '求购',
),
'price' => Array (
'1' => '500元以下',
'2' => '500-1000元',
),
);

foreach ($arr as $key1=>$val){
foreach($val as $key2=>$val2){
$url=geturl($urlArr);
$search[$key1][]=array('value'=>$key2,'name'=>$val2,'url'=>$url);
}
}
其中$urlArr如何处理当
$key1=type,$key2=1时,$urlArr=array('type'=>"1",'price'=>"$price")
$key1=type,$key2=2时,$urlArr=array('type'=>"2",'price'=>"$price")
$key1=price,$key2=1时,$urlArr=array('type'=>"$type",'price'=>"1")
$key1=price,$key2=2时,$urlArr=array('type'=>"$type",'price'=>"2")
以后如果再加一个区域,比如area则当
$key1=type,$key2=1时,$urlArr=array('type'=>"1",'price'=>"$price",'area'=>"$area")
...
另外还有一些固定的字段如:分类sort,时间postTime等,最后将上面处理的$urlArr数组与这些固定字段拼在一起,如当$key1=type,$key2=1时,
$urlArr=array('type'=>"1",'price'=>"$price",'sort'=>"$sort",'postTime'=>"$postTime")
写了这么多,不知道大家看明白没有,再不明白,我真的不知道如何描述了

codeyell-com 2009-11-30
  • 打赏
  • 举报
回复
"处理"?你的意思是指什么?
床上等您 2009-11-30
  • 打赏
  • 举报
回复
看不到图
xuzuning 2009-11-30
  • 打赏
  • 举报
回复
如果你使用了模板引擎,那么应按模板引擎的要求组装数据
如果不知道现有的数据格式如何转换为目标数据格式,请帖出两者的示例
「已注销」 2009-11-30
  • 打赏
  • 举报
回复
我不清楚什么是笛卡尔集啊,我这样处理了一下
foreach(条件)
....
$Temp_arr.="'$field'=>$$field,";
}
$Temp_arr = substr($Temp_arr,0,strlen($Temp_arr)-1);//去掉最后一个,号此时$Temp_arr为
'type'=>$type,'price'=>$price

if (is_array($arr)){
foreach ($arr as $key1=>$val){
foreach($val as $key2=>$val2){
$url_arr1=array(str_replace("$$key1",$key2,$Temp_arr));
$url_arr2=array('catid'=>$catid,'areaid'=>$areaid,'page'=>$page);
$url = array_merge($url_arr1, $url_arr2);
$search[$key1][]=array('value'=>$key2,'name'=>$val2,'url'=>$url);
print_r($url);exit;
}
}
}
为什么输出的url为Array ( [0] => 'type'=>1,'price'=>$price [catid] => 13 [areaid] => [page] => 1 )
而不是:Array ([type]=>1[price]=>$price[catid] => 13 [areaid] => [page] => 1 )
x1987xiaoxiao 2009-11-30
  • 打赏
  • 举报
回复
恩……我的想法是这样


按照楼主的思路如果是这么个url的数组的话,是不是相当于$arr这里俩个子数组进行了一个笛卡尔集呢??
「已注销」 2009-11-30
  • 打赏
  • 举报
回复
哦,我在程序中使用了smarty,我现在的想法是把url处理好保存在search数组中,
在模板中这样调用,比如调用价格则:(其中,price就是后台增加的价格的字段名)
{foreach from=$search.price item=price}
<a href="{$price.url}">{$price.name}</a>
{/foreach}
已经能正常输出了,只是url没有处理好

to:4楼
意思是不是点链接的时候,触发一个js过程,组合成url然后:window.location.href=url;
x1987xiaoxiao 2009-11-30
  • 打赏
  • 举报
回复
楼主,要达到你说的那种url的变换的,不需要都在php中处理过url之后在输出,可以再js中构造url
比如 你的输出的可选项是从
$type_arr=Array(
'1'=>'出售',
'2'=>'求购');
$price_arr=Array(
'1'=>'500元以下',
'2'=>'500-1000元');
从输出,可以点击的地方加个js的方法,触发的时候,根据选择的内容构造一个url并转向,也能达到楼主说的整个效果
而且按照楼主在3楼中所提到的意思,如果是预先设计好url,那这个应该是一个函数当中的方法,最后得到一个含有构造url的数组,应该是通过传入的值来选择, 如果不是一个函数,那就是说每页都要进行这个url的构造操作。
不过说到楼主在3楼中提及的思路,确实挺复杂。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧