使用相同的参数名称获取不同的值

时间:2014-12-18 07:59:05

标签: php cookies get

我遇到了问题,我需要帮助。我有这样的代码:

<?php

if (isset($_GET['profile']) && '' != $_GET['profile']) {
    setcookie('asd', $_GET['profile'], time() + 2592000, '/');
}

我正在获取配置文件值并将其设置为用户cookie。它工作正常,如果有1个配置文件,则下注如果网址如下:http://www.example.com?profile=1&profile=2则覆盖该值。 我想要的是改变方式,这样写入cookie的信息就不会被覆盖,但是会这样写:1-2,所以cookie就像:asd 1-2

2 个答案:

答案 0 :(得分:0)

你做不到。您需要将uri设置为?profile=1-2?profile1=1&profile2=2。当您使用?var=x&var=z&var=foo时,将始终丢失两个值。这与以下内容完全相同:

$array = [];
$array['foo'] = 1;
$array['foo'] = 2;
$array['foo'] = 3;

此时您丢失了值12。您在3下只有 $array['foo']

修改
您可以选择在PHP中创建?profile1=x&profile2=z ... &profile999=foo及更高版本的URI:

foreach($_GET as $key => $val) {
    // omits null values
    if (!isset ($val)) continue; 

    // omits $_GET variables not starting with 'profile'
    if (strpos($key,'profile') !== 0) continue; 

    $prof[] = $val;
}
$profiles = implode('-',$prof);
setcookie('asd', $profiles, time() + 2592000, '/');

?profile[]=1&2&3以及代码:

if (isset ($_GET['profile'])) {
    foreach ($_GET['profile'] as $val) {
        $prof[] = $val;
    }
    $profiles = implode('-',$prof);
    setcookie('asd', $profiles, time() + 2592000, '/');
}   

答案 1 :(得分:0)

GET参数不起作用。

提交多值表单字段,即通过GET var提交数组,可以按如下方式完成:

http://www.example.com/index.php?cars[]=Saab&cars[]=Audi

现在$ _GET将是一个包含所有值的数组。