从数组中剥离整数

时间:2014-09-24 00:22:51

标签: php arrays

我使用以下代码从页面网址中删除产品编号,以便我可以查询数据库以检查自定义规范链接。

$qs = explode('&',$_SERVER['QUERY_STRING']);
$prodid = explode('=',$qs[0]);  
$prod_ID = $prodid[count($prodid)-1];

例如,$ qs包含 数组([0] => products_id = 1121 [1] => cPath = 180_182 [2] =>)

然后我决定我还需要能够为类别指定自定义规范,所以我添加了以下代码:

$catid = explode('=',$qs[1]);
$lastnmbr = explode('_',$catid[1]);    
$cat_ID = $lastnmbr[count($lastnmbr)-1];

这给了我$ 11的prod_ID和182的$ cat_ID。

然而,这是问题所在。如果我回到产品列表而不是特定产品页面,$ qs中保存的数组将变为Array([0] => cPath = 180_182 [1] =>),这意味着

$catid = explode('=',$qs[1]);

不再是收集类别ID的正确数组位置,实际上它是由

收集的
$prodid = explode('=',$qs[0]);

这使得以下所有代码都认为它是一种产品。

我认为我需要以某种方式使用=符号前面的信息来确保如果它说cPath它将它分配给$ catid,如果它说product_id它将它分配给$ prodid。

是否有正确的"这样做的方法?我确实试过制作一个新的

$catchk = explode($qs[0], '=');

认为这会在=符号之前返回数据,但它没有,所以我显然在这里有错误的结束。

为了使解决方案清楚,我使用了Tyr(谢谢你)的建议并完成了

$catid = $_GET['cPath'];
$lastnmbr = explode('_',$catid);    
$cat_ID = $lastnmbr[count($lastnmbr)-1];
$prod_ID = $_GET['products_id'];

由于子类别显示为180_182等,因此必须能够删除最后一个_(下划线)后的数字集

1 个答案:

答案 0 :(得分:3)

如果您尝试$ _GET [' product_id']和$ _GET [' cPath']而不是$ _SERVER [' QUERY_STRING']用法会怎样?

您正在避免使用正确的阵列路径的问题。