我试图从字符串中获取一个简单的数组。

j [位置] => ???? [标题] => ??? [音调] => ??? [缩放] => ???

但是由于某种原因,我得到以下错误:


注意:未定义的索引:第21行的标题


这是PHP代码:

<?php
$mysql_data=
"position: 34.032616, -118.286564|
heading: -159.50240187408838|
pitch: 0|
zoom: 2";


$pov = explode("|", $mysql_data);
foreach($pov as $key)
{
    $element = explode(": ", $key);
    $pov[ $element[0] ] = $element[1];
}
unset($element);


//Testing echoes
print_r($pov);
echo "\n";
echo $pov['heading'];
?>


另外,是否有一种更简单的方法可以一次性完成并跳过foreach?
顺便说一句:我不需要键的0,1..etc,只需要标记诸如“ heading”,“ zoom”等

最佳答案

假设输入字符串中没有换行符,则无需foreach()即可更简单地执行此操作:

$str = 'position: 34.032616, -118.286564|heading: -159.50240187408838|pitch: 0|zoom: 2';
$str = str_replace(array('|',':'), array('&','='), $mysql_data);

parse_str($str, $pov);

print_r($pov);
/*
Array
(
    [position] =>  34.032616, -118.286564
    [heading] =>  -159.50240187408838
    [pitch] =>  0
    [zoom] =>  2
)
*/


如果输入字符串中包含换行符,请更改str_replace参数中的规则。

str_replace(array("\r\n","\n",'|',':'), array('','','&','='), $mysql_data);

10-04 12:56