在PHP中处理字符串
我需要一种排序的方法,我在PHP字符串,字符串的格式如下,但更大在PHP中处理字符串,php,arrays,Php,Arrays,我需要一种排序的方法,我在PHP字符串,字符串的格式如下,但更大 { 1, 3, 1, 2, }, { 2, 3, 2, 1, }, { 3, 3, 2, 2, }, { 1, 2, 3, 1, }, 我需要它做的是将括号中的每一组数字转换成一个数组。在这种情况下,将有四个数组,每个数组中有四个值 第一个数组如下所示: array1[0] == 1 array1[1] == 3 array1[2] == 1 array1[3] == 2 我怎样才能做到这一点呢?我想我应该先用大括号分开,然后
{ 1, 3, 1, 2, }, { 2, 3, 2, 1, }, { 3, 3, 2, 2, }, { 1, 2, 3, 1, },
我需要它做的是将括号中的每一组数字转换成一个数组。在这种情况下,将有四个数组,每个数组中有四个值
第一个数组如下所示:
array1[0] == 1
array1[1] == 3
array1[2] == 1
array1[3] == 2
我怎样才能做到这一点呢?我想我应该先用大括号分开,然后用逗号分开。这是编写代码最简单的方法(可能无论如何,取决于您的观点),但就复杂性而言,这并不是最有效的方法 最有效的方法是遍历数组,在找到逗号或大括号时执行不同的操作:
arrayOfArrays = new Array()
masterIndex = 0
arrayOfArrays[masterIndex] = new Array()
for char c in string
if c == '}'
masterIndex++
arrayOfArrays[masterIndex] = new Array()
else if c == ','
append num to arrayOfArrays[masterIndex]
else if c is whitespace
noop
else
append c to num
我想我会用大括号分开,然后用逗号分开。这是编写代码最简单的方法(可能无论如何,取决于您的观点),但就复杂性而言,这并不是最有效的方法 最有效的方法是遍历数组,在找到逗号或大括号时执行不同的操作:
arrayOfArrays = new Array()
masterIndex = 0
arrayOfArrays[masterIndex] = new Array()
for char c in string
if c == '}'
masterIndex++
arrayOfArrays[masterIndex] = new Array()
else if c == ','
append num to arrayOfArrays[masterIndex]
else if c is whitespace
noop
else
append c to num
$str=“{1,3,1,2,},{2,3,2,1,},{3,3,2,2,},{1,2,3,1,},”;
$matches=array();
$nArrays=preg_match_all('/{(.*)}/U',$str,$matches);
对于($i=1;$i$str=“{1,3,1,2,},{2,3,2,1,},{3,3,2,2,},{1,2,3,1,},”;
$matches=array();
$nArrays=preg_match_all('/{(.*)}/U',$str,$matches);
对于($i=1;$i我不能评论(我不能评论(数组大小是固定的=4?数组大小是固定的=4?@vartec:看起来像是伪码,对mean来说不会太难破译。这是我通常用其他任何东西来破译的方式,尽管肖恩的想法很巧妙。@vartec:看起来像是伪码,对mean来说不会太难破译。这是我通常用其他任何东西来破译的方式,虽然Sean的想法非常巧妙。str_replace(数组(“{”,“}”)、array(“[”,“]”)、$inbound)也会起作用。回音$array_of_数组没有显示任何东西,我是不是遗漏了什么?不,我遗漏了数字的尾随逗号。这导致json_解码失败。请稍等片刻。你不能只做str_replace(“,}”,“}”,“}”,“$inbound”)吗;而不是使用正则表达式?很抱歉,这让我很痛苦,但当我使用print_r($array_of_array);我收到的所有输出都是array()str_replace(array(“{”,“}”)、array(“[”,“]”,$inbound)还可以。回显$array\u of_数组没有显示任何内容,我是不是遗漏了什么?不,我遗漏了数字上的尾随逗号。这导致json\u解码失败。请稍等。你不能只做stru替换(“,}”,“}”,“inbound”);而不是使用regex吗?很抱歉,当我使用print\r($array\u of_数组)时,会很痛苦;作为输出接收的所有内容都是数组()
$str = "{ 1, 3, 1, 2, }, { 2, 3, 2, 1, }, { 3, 3, 2, 2, }, { 1, 2, 3, 1, },";
$matches = array();
$nArrays = preg_match_all('/{(.*)}/U',$str, $matches);
for($i=1;$i<=$nArrays; $i++) {
$aArray = array();
$nNums = preg_match_all('/(\d+)/',$matches[$i],$aArray);
${'array'.$i} = array();
for($j=0;$j<=$nNums; $j++) {
${'array'.$i}[$j] = $aArray[$j+1];
}
}