Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 - Fatal编程技术网

在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 我怎样才能做到这一点呢?我想我应该先用大括号分开,然后

我需要一种排序的方法,我在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

我怎样才能做到这一点呢?

我想我应该先用大括号分开,然后用逗号分开。这是编写代码最简单的方法(可能无论如何,取决于您的观点),但就复杂性而言,这并不是最有效的方法

最有效的方法是遍历数组,在找到逗号或大括号时执行不同的操作:

 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];
  }  
}