PHP:分割cookie值并计算部分

PHP:分割cookie值并计算部分,php,cookies,split,explode,Php,Cookies,Split,Explode,我是一个PHP初学者,希望这里有人能帮助我 我有一个字符串,看起来像下面的示例,其中分隔符是下划线,字符串的长度可以不同。 三位数字是ID,括号中的数字是计数 示例:101(2)\u 102(3)\u 103(5) 我正在寻找一种方法来拆分它,这样我就可以访问每个ID和每个计数,以便将它们用于进一步的计算等。 我试着用explode,但没能用 我的尝试: print_r(explode("_", $_COOKIE['myCookieName'])); 我想我需要在这里创建一个数组 预期输出(

我是一个PHP初学者,希望这里有人能帮助我

我有一个字符串,看起来像下面的示例,其中分隔符是下划线,字符串的长度可以不同。 三位数字是ID,括号中的数字是计数

示例:
101(2)\u 102(3)\u 103(5)

我正在寻找一种方法来拆分它,这样我就可以访问每个ID和每个计数,以便将它们用于进一步的计算等。 我试着用explode,但没能用

我的尝试:

print_r(explode("_", $_COOKIE['myCookieName'])); 
我想我需要在这里创建一个数组

预期输出(示例):
总ID:3,总计数:10

有人能告诉我如何做到这一点吗

非常感谢,
Mike

您可以使用它来提取
id
count
值,然后将它们:

请注意,您可能会发现由
id
值索引的计数数组更有用,您可以在
preg\u match\u all
的输出中使用该数组:

$counts = array_combine($matches[1], $matches[2]);
echo "Total IDs: " . count($counts) . ", total count: " . array_sum($counts). PHP_EOL;

一个稍微简单一点的版本也应该可以:

$cookie = '101(2)_102(3)_103(5)';
preg_match_all('/\((\d+)\)/', $cookie, $matches);
[, $counts] = $matches;
echo 'Total IDs: ', count($counts), ', total count: ', array_sum($counts);

演示:

@Justin299别担心-我很高兴能帮上忙。注意:我用另一种解决方案编辑了我的答案,给出了一个由
id
值索引的计数数组,以防这可能更有用。非常感谢,尼克!这是完美的,它工作得很好。是的-如果OP不关心
id
值,这肯定更简单+1对此也非常感谢。我也需要ID值,但这是在我已经提交了我的帖子之后出现的,所以这两种解决方案对我帮助很大。
$counts = array_combine($matches[1], $matches[2]);
echo "Total IDs: " . count($counts) . ", total count: " . array_sum($counts). PHP_EOL;
$cookie = '101(2)_102(3)_103(5)';
preg_match_all('/\((\d+)\)/', $cookie, $matches);
[, $counts] = $matches;
echo 'Total IDs: ', count($counts), ', total count: ', array_sum($counts);