Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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 - Fatal编程技术网

Php 将字符串转换为预定义的二维数组

Php 将字符串转换为预定义的二维数组,php,Php,可能重复: 我的字符串如下所示: 01,03,02,15|05,04,06,10|07,09,08,11|12,14,13,16 如何将上述字符串转换为定义的数组,如下所示: $a[0] = array('column' => array("row1" => "01", "row2"=> "05", "row3" => "07", "row4" =>"12")); $a[1] = array('column' => array("row1" => "

可能重复:

我的字符串如下所示:

01,03,02,15|05,04,06,10|07,09,08,11|12,14,13,16
如何将上述字符串转换为定义的数组,如下所示:

$a[0] = array('column' => array("row1" => "01", "row2"=> "05", "row3" => "07", "row4" =>"12"));
$a[1] = array('column' => array("row1" => "03", "row2"=> "04", "row3" => "09", "row4" =>"14"));
$a[2] = array('column' => array("row1" => "02", "row2"=> "06", "row3" => "08", "row4" =>"13"));
$a[3] = array('column' => array("row1" => "15", "row2"=> "10", "row3" => "11", "row4" =>"16"));

我知道我应该使用explode函数,但不确定它到底应该如何实现,任何帮助都将不胜感激,谢谢

使用这种格式,您基本上只需要:

$a = array_map("str_getcsv", explode("|", $string));
这将为您提供一个枚举数组。如果需要特定的命名密钥,则必须再次对该结构进行后期处理:

foreach ($a as $i=>$row) {
    $a[$i] = array("column" => array("row1"=>$row[0], "row2"=>$row[1], "row3"=>$row[2], "row4"=>$row[3]));
}

使用这种格式,您基本上只需要:

$a = array_map("str_getcsv", explode("|", $string));
这将为您提供一个枚举数组。如果需要特定的命名密钥,则必须再次对该结构进行后期处理:

foreach ($a as $i=>$row) {
    $a[$i] = array("column" => array("row1"=>$row[0], "row2"=>$row[1], "row3"=>$row[2], "row4"=>$row[3]));
}

我想这就是你想要的:

<?php

$a = array();
$str = "01,03,02,15|05,04,06,10|07,09,08,11|12,14,13,16";

$arr = explode("|", $str);
for ($i = 0; $i < count($arr); $i++) {

    $a[$i] = array('column' => array());

}

for ($i=0; $i<count($arr); $i++) {

    $arr2 = explode(",", $arr[$i]);

    for ($j = 0; $j < count($arr2); $j++) {

        $key = "row" . intval($i + 1);
        $a[$j]['column'][$key] = $arr2[$j];

    }

}

echo "<pre>";
var_dump($a);

?>

我想这就是你想要的:

<?php

$a = array();
$str = "01,03,02,15|05,04,06,10|07,09,08,11|12,14,13,16";

$arr = explode("|", $str);
for ($i = 0; $i < count($arr); $i++) {

    $a[$i] = array('column' => array());

}

for ($i=0; $i<count($arr); $i++) {

    $arr2 = explode(",", $arr[$i]);

    for ($j = 0; $j < count($arr2); $j++) {

        $key = "row" . intval($i + 1);
        $a[$j]['column'][$key] = $arr2[$j];

    }

}

echo "<pre>";
var_dump($a);

?>


the=array();不需要初始化,但我一直在写:)实际上,在第二种情况下,您需要像($sub_array=array();)那样重置变量,因为它的作用域不会在一个循环之后结束;不需要初始化,但我一直在写:)实际上,在第二种情况下,您需要以某种方式重置变量,如($sub_array=array();),因为它的作用域不会在一次循环后结束。将来,只需更新现有问题。将来,只需更新现有问题。