我有一个类似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
)