是否可以使用preg_replace或其他php代码来做到这一点?
我有一个看起来像这样的字符串:
[[10],[11],[2],[3],[5],[1],[10],[15],[20],[21],[14],[16],[17],[6],[9],[4]]
我想这样显示:
[[10,11],[2,3],[5,1],[10,15],[20,21],[14,16],[17,6],[9,4]]
所以我用str_replace
替换了“],[”部分
$xy1 = str_replace('],[', ',', $xy1);
现在看起来像这样:
[[10,11,2,3,5,1,10,15,20,21,14,16,17,6,9,4]]
但是我需要在第二个数字后添加一个额外的“]”,并在第二个逗号前添加一个额外的[:
[[10,11],[2,3],[5,1]
答案 0 :(得分:1)
几种可能性:
该字符串是有效的JSON(无论是否打算使用该字符串),因此您可以对其进行解码,对所得数组进行分块并重新编码。
$result1 = json_encode(array_chunk(array_column(json_decode($string),0),2));
如果您是通过json_encode
在先前的代码中生成字符串,那时候最好只使用array_chunk
,但是如果它来自其他来源,您显然不能做那个。
对于此特定字符串,将数字与正则表达式配对可能不那么麻烦。
$result2 = preg_replace('/(\d+)\D+(\d+)/', '$1,$2', $string);
或两种方式的组合,提取所有数字,然后分块编码。
preg_match_all('/\d+/', $string, $numbers);
$result3 = json_encode(array_chunk($numbers[0], 2), JSON_NUMERIC_CHECK);
答案 1 :(得分:0)
这可能会有所帮助,提取嵌套的数组值,然后按对将它们分组。
$newArray = array_chunk( array_column( $array, 0 ), 2 );