如何将逗号分隔的字符串拆分为每组2个的组,然后将所有这些组转换为数组


How to split a comma separated string into groups of 2 each and then convert all these groups to an array

我有一个类似1,2,2,3,3,4等的字符串。首先,我想把它们分成像(1,2),(2,3),(3,4)这样的字符串组。然后我如何使这个字符串成为像{(1,2) (2,3) (3,4)}这样的数组。我之所以想要这个,是因为我有一个数组,里面装满了这些1,2等的值,并且我已经把这些值放在了$_SERVER['query_string']="&exp=".$exp中。因此,请给我任何想法来克服或解决这个问题。目前这是创建一组字符串,但再次说明如何制作此数组。

function x($value)
{
    $buffer = explode(',', $value);
    $result = array();
    while(count($buffer))
    {
        $result[] = sprintf('%d,%d', array_shift($buffer), array_shift($buffer));
    }
    return implode(',', $result);
}
$result = x($expr);

但它并没有达到我的预期

我不确定我是否完全理解。您可以创建数字对,如:

$string = '1,2,3,4,5,6';
$arr = array_chunk(explode(',', $string), 2);

这会给你一些类似的东西:

array(
    array(1, 2),
    array(3, 4),
    array(5, 6)
)

如果您想将它们转换为查询字符串,您可以使用http_build_query和一些数据处理。

编辑:你可以这样构建查询(100%未测试):

$numbers = array_map(function($pair) {
    return array($pair[0] => $pair[1]);
}, $arr);
$query_string = '?' . http_build_query($numbers);

这:

echo '<pre>';
$str = '1,2,3,4,5,6,7,8';
preg_match_all('/('d+,'d+)(?=,*)/', $str, $matches);
$pairs = $matches[0];
print_r($pairs);

输出:

Array
(
    [0] => 1,2
    [1] => 3,4
    [2] => 5,6
    [3] => 7,8
)