Php 分解/列表()后cookie中的值无效

Php 分解/列表()后cookie中的值无效,php,Php,返回值1:4、1:5、1:3,而不是1:445等。我认为您只需要在分解数组中循环,然后用:替换- setcookie("mnau", "1-445 1-51 1-3001"); $kosik = explode(" ", $_COOKIE["mnau"]); foreach($kosik as $value) { list($item_ajdi, , $itemcount) = $value; echo $item_ajdi . " : " . $itemcount . ","

返回值1:4、1:5、1:3,而不是1:445等。

我认为您只需要在分解数组中循环,然后用
替换
-

setcookie("mnau", "1-445 1-51 1-3001");
$kosik = explode(" ", $_COOKIE["mnau"]);

foreach($kosik as $value) {
    list($item_ajdi, , $itemcount) = $value;
    echo $item_ajdi . " : " . $itemcount . ",";
}
这将输出

setcookie("mnau", "1-445 1-51 1-3001");
//var_dump($_COOKIE);

$kosik = explode(" ", $_COOKIE["mnau"]);
foreach ($kosik as $value) {
    echo str_replace('-', ':', $value) . ', ';
}

@Fabio的答案是最好的,但如果您想保持当前代码,您需要按照@Caramiriel的建议,在
-
上分解
$value
,使其成为一个数组,然后再在
列表()中使用它

有输出

setcookie("mnau", "1-445 1-51 1-3001");
$kosik = explode(" ", $_COOKIE["mnau"]);
foreach($kosik as $value) {
    $value = explode("-", $value);
    list($item_ajdi,$itemcount) = $value;
    echo $item_ajdi . " : " . $itemcount . ", ";
}

我认为
$value
是一种字符串类型。您正在选择第一个和第三个元素(所以字符)。您可能想在
-
上进一步扩展。实际上,我将echo放在那里只是为了简化,函数本身单独使用这些值,但这对其他函数没有多大用处。不过,谢谢。
setcookie("mnau", "1-445 1-51 1-3001");
$kosik = explode(" ", $_COOKIE["mnau"]);
foreach($kosik as $value) {
    $value = explode("-", $value);
    list($item_ajdi,$itemcount) = $value;
    echo $item_ajdi . " : " . $itemcount . ", ";
}
1 : 445, 1 : 51, 1 : 3001,