Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:字符串中的列表和组值对_Php_Arrays_Arraylist_Preg Match_Explode - Fatal编程技术网

PHP:字符串中的列表和组值对

PHP:字符串中的列表和组值对,php,arrays,arraylist,preg-match,explode,Php,Arrays,Arraylist,Preg Match,Explode,我使用以下几行来计算字符串中的值,到目前为止效果很好。 如果字符串的长度和包含的值不同,如何像下面的示例那样列出每个值对的值 我的PHP(到目前为止): $str= '101(2)_102(3)_103(5)'; preg_match_all('/(?<=^|_)([^(]+)\((\d+)\)(?=_|$)/', $str, $matches); $ids = $matches[1]; $counts = $matches[2]; id1: 101, count1: 2 id2: 10

我使用以下几行来计算字符串中的值,到目前为止效果很好。 如果字符串的长度和包含的值不同,如何像下面的示例那样列出每个值对的值

我的PHP(到目前为止):

$str= '101(2)_102(3)_103(5)';
preg_match_all('/(?<=^|_)([^(]+)\((\d+)\)(?=_|$)/', $str, $matches);
$ids = $matches[1];
$counts = $matches[2];
id1: 101, count1: 2
id2: 102, count2: 3
id3: 103, count3: 5
多谢各位,
Mike

如果您使用我的答案的第二部分中的代码,您可以在结果数组上使用
foreach
循环:

$cookie = '101(2)_102(3)_103(5)';
preg_match_all('/(?<=^|_)([^(]+)\((\d+)\)(?=_|$)/', $cookie, $matches);
$counts = array_combine($matches[1], $matches[2]);
$i = 1;
foreach ($counts as $id => $count) {
    echo "id$i: $id, count$i: $count\n";
    $i++;
}

如果您使用我的答案第二部分中的代码,您可以在结果数组上使用
foreach
循环:

$cookie = '101(2)_102(3)_103(5)';
preg_match_all('/(?<=^|_)([^(]+)\((\d+)\)(?=_|$)/', $cookie, $matches);
$counts = array_combine($matches[1], $matches[2]);
$i = 1;
foreach ($counts as $id => $count) {
    echo "id$i: $id, count$i: $count\n";
    $i++;
}