将构造为多维数组的字符串转换为数组

时间:2019-09-15 08:36:50

标签: php multidimensional-array

我有这个字符串:

array(array('1','name1','1','0'),array('2','name2','0','1'),array('3','name3','0','1'),array('4','name4','1','1'),array('5','name5','1','0'));

存储在$_POST['data']

字符串I m receiving is via。load`函数,其中字符串的结构是这样构造的。

我想通过php将其转换为多维数组,这样我就可以轻松地遍历它

到目前为止,我已经通过修改字符串和方法达到了解决方法。

现在我的字符串如下:

1,name1,1,0,|2,name2,0,1,|3,name3,0,1,|4,name4,1,1,|5,name5,1,0,|

方法就是这个

$data2 = $_POST['data2']; /// get data


      $data2 = substr_replace($data2 ,"", -2); // eliminate ,|
      $data2 = $data2."|"; // add |


$one=explode("|",$data2);  // create multidimensional array
      $array = array();
      foreach ($one as $item){
          $array[] = explode(",",$item);
      }

我可以保留此解决方案,但我想知道是否有其他方法可以按照第一个请求进行操作

2 个答案:

答案 0 :(得分:0)

有一种更好,更简单的方法。您只需要在foreach循环内使用foreach循环即可。

$data = array(
    array('1','name1','1','0'),
    array('2','name2','0','1'),
    array('3','name3','0','1'),
    array('4','name4','1','1'),
    array('5','name5','1','0')
);

foreach( $data as $d ) {
    foreach( $d as $value ) {
        echo $value;
        echo '<br />';
    }
}

您可以在线查看Demo

答案 1 :(得分:0)

要解析原始字符串,可以使用eval()

$string = 'array(array('1','name1','1','0'),array('2','name2','0','1'),array('3','name3','0','1'),array('4','name4','1','1'),array('5','name5','1','0'));';
eval('$array = '.$string);

但是可以/应该在服务器上禁用eval,因为它带有安全性问题。

我要做的是使用JSON,您将在其中发布JSON编码:

json_ecnode( $my_array );

然后将其解码:

$array = json_decode( $_POST['data'], true );