Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Multidimensional Array - Fatal编程技术网

如何从格式化文本生成多维数组?PHP

如何从格式化文本生成多维数组?PHP,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我想创建一个多维数组,如 $cars = array("brand"=>"toyota","type"=>"suv","color"=>"white"); 我有一根像绳子一样的线 $text = "brand => toyota,type => suv, color => white"; 如何根据此文本创建上一个数组?此代码将满足您的要求: $text = "brand => toyota,type => suv, color => wh

我想创建一个多维数组,如

$cars = array("brand"=>"toyota","type"=>"suv","color"=>"white");
我有一根像绳子一样的线

$text = "brand => toyota,type => suv, color => white";

如何根据此文本创建上一个数组?

此代码将满足您的要求:

$text = "brand => toyota,type => suv, color => white";
$cars = array();
$str_explode = explode(",",$text);
$count = count($str_explode);
for($i=0;$i<$count;$i++){
  $expl = explode("=>",$str_explode[$i]);
  $cars[$expl[0]] = $expl[1];
}
print_r($cars);
$text=“品牌=>丰田,车型=>suv,颜色=>白色”;
$cars=array();
$str_explode=explode(“,”,$text);
$count=计数($str_explode);

对于($i=0;$i丰田[type]=>suv[color]=>白色)

此代码将满足您的要求:

$text = "brand => toyota,type => suv, color => white";
$cars = array();
$str_explode = explode(",",$text);
$count = count($str_explode);
for($i=0;$i<$count;$i++){
  $expl = explode("=>",$str_explode[$i]);
  $cars[$expl[0]] = $expl[1];
}
print_r($cars);
$text=“品牌=>丰田,车型=>suv,颜色=>白色”;
$cars=array();
$str_explode=explode(“,”,$text);
$count=计数($str_explode);
对于($i=0;$i丰田[type]=>suv[color]=>white)

使用以下代码:

$exploded_text = explode(",", $text);
$new_array = array();
for($loop=0; $loop<count($exploded_text); $loop++){
$explode = explode("=>", $exploded_text[$loop]);
$new_array[trim($explode[0])] = trim($explode[1]); 
}
$exploded\u text=分解(“,”,$text);
$new_array=array();
对于($loop=0;$loop使用以下代码:

$exploded_text = explode(",", $text);
$new_array = array();
for($loop=0; $loop<count($exploded_text); $loop++){
$explode = explode("=>", $exploded_text[$loop]);
$new_array[trim($explode[0])] = trim($explode[1]); 
}
$exploded\u text=分解(“,”,$text);
$new_array=array();
对于($loop=0;$loop


您可以这样使用:

Array
(
    [brand] =>  toyota
    [type] =>  suv
    [color] =>  white
)
您可以这样使用:

Array
(
    [brand] =>  toyota
    [type] =>  suv
    [color] =>  white
)

这只需要您进行双重分解:

<?php
    $text = "brand => toyota,type => suv, color => white";
    $cars  = array();
    while  (strpos($text,'=>')!== false) {
        $p=strpos($text,'=>');
        if ($p!=false) {
                $i=trim(substr($text,0,$p));
                $text=substr($text,$p+2);
                $p=strpos($text,',');
                if ($p==false) {$p=strlen($text);}
                $v=trim(substr($text,0,$p));
                $text=substr($text,$p+1);
                $cars [$i]=$v;
                }
        }
?>

注意:在
$键
$值
上使用
trim()
可以删除空格。

这只需要双重分解:

<?php
    $text = "brand => toyota,type => suv, color => white";
    $cars  = array();
    while  (strpos($text,'=>')!== false) {
        $p=strpos($text,'=>');
        if ($p!=false) {
                $i=trim(substr($text,0,$p));
                $text=substr($text,$p+2);
                $p=strpos($text,',');
                if ($p==false) {$p=strlen($text);}
                $v=trim(substr($text,0,$p));
                $text=substr($text,$p+1);
                $cars [$i]=$v;
                }
        }
?>

注意:在
$key
$value
上使用
trim()
可以删除空格。

最好创建一个小函数来执行此操作,以便我们将来可以使用它。下面是我的函数:

$text = "brand => toyota,type => suv, color => white";
$cars = array();
$kv = explode(',',$text);
array_walk($kv, function ($item) use (&$cars){
        $kv = explode('=>', $item); 
        $cars[trim($kv[0])] = trim($kv[1]);
        });
print_r($cars);

创建一个小函数来实现这一点很好,这样我们以后就可以使用它了。下面是我的函数:

$text = "brand => toyota,type => suv, color => white";
$cars = array();
$kv = explode(',',$text);
array_walk($kv, function ($item) use (&$cars){
        $kv = explode('=>', $item); 
        $cars[trim($kv[0])] = trim($kv[1]);
        });
print_r($cars);
嗨,你可以这样做

Array (
    [brand] => toyota
    [type] => suv
    [color] => white
)

您好,您可以这样做

Array (
    [brand] => toyota
    [type] => suv
    [color] => white
)

只是另一个使用和的解决方案

输出:

Array
(
    [brand] => toyota
    [type] => suv
    [color] => white
)

只是另一个使用和的解决方案

输出:

Array
(
    [brand] => toyota
    [type] => suv
    [color] => white
)

假设以下代码指定的格式可以工作


假设以下代码指定的格式可以工作



,“
”分解?只需在字符串上对“,”使用先分解,然后在第一次分解所有结果时对“=>”使用后分解。从
”,“
”分解?只需在字符串上对“,”使用先分解,然后在第一次分解所有结果时对“=>”使用后分解。也可能值得从键中删除所有空格。@Matt如果您只删除比我更大的所有空格的话t将作为字符串而不是数组。@GhanshyamKatriya我不确定你是否理解我的意思。除了你的代码,删除键中的空格。例如,如果你只是使用它,那么你将不得不访问像
$cars['color']
这样的值,而不是
$cars['color'];
.Daenu编辑了您的文章以在输出中删除它,但该编辑是不正确的。@GhanshyamKatriya您发布的代码可能工作得很好,但由于您在for循环中使用了count()函数,因此运行它需要更多的时间。每次循环运行时,它都将计算count()这会使它变慢。而且您使用了更多不需要作为$key和$value的变量,这将增加其空间复杂性。可能还值得从键中删除所有空格。@Matt如果您只删除所有空格,那么它将作为字符串而不是数组。@GhanshyamKatriya我不太确定您是否理解我的意思。此外o您的代码,删除键中的空格,例如,如果您只使用空格,则必须访问值,如
$cars['color']
,而不是
$cars['color'];
.Daenu编辑了您的文章以在输出中删除它,但该编辑是不正确的。@GhanshyamKatriya您发布的代码可能工作得很好,但由于您在for循环中使用了count()函数,因此运行它需要更多的时间。每次循环运行时,它都将计算count()这会使它变慢。并且您使用了更多不需要作为$key和$value的变量,这会增加其空间复杂性。假设字符串类似于
brand=>toyota,type=>suv,color=>white
假设字符串类似于
brand=>toyota,type=>suv,color=>white
1)为什么你有
&$key
,如果它没有用。2)没有必要参考你的价值
&item
@Uchiha谢谢你指出(太粗心了)。删除这些。1)如果$key没有用,为什么要使用它。2) 无需参考您的价值
&item
@Uchiha感谢您指出(太粗心了)。去掉那些。那太复杂了,太费时了。那太复杂了,太费时了