PHP拆分数组变量

时间:2011-08-15 18:47:33

标签: php arrays

我从Feed中提取XML。标签上有一个标签:

<georss:point>34.234 -34.435</georss:point> 

包含我插入MySQL的两个变量 当我运行此代码时,变量是'array'。然后我放置一个提取物来打破变量,不确定下一个

$xmlString = str_replace('georss:point','point',$xmlString);  
$xml = new SimpleXMLElement($xmlString); 
$items = $xml->xpath('channel/item'); 
$closeItems = array(); 
foreach($items as $item) 
{     
    $latlng = explode(' ',trim($item->point));
    array(
            'lat'=>$latlng[0],
            'lng'=>$latlng[1]
    );

    $lat = array($latlng[0]);
    $lng = array($latlng[1]);

    echo $lat;
    echo $lng;  
} 

当我放置那些echo语句时(在最后两行代码中),变量会变为屏幕。但是,当我将这些变量放在数组之外时,这些值不会得到回应。 我试图将这些变量放在数组之外,以便我可以将这些变量插入到数据库中。我已尝试在varaiables上提取,但这会以“数组”打印回屏幕...不确定我需要做什么才能从数组中提取这些变量。谢谢,

4 个答案:

答案 0 :(得分:1)

用这样的版本替换你的foreach ......

$new_array = array();
foreach($items as $item) 
{     
    $latlng = explode(' ',trim($item->point));
    $new_array[] = array('lat'=>$latlng[0],'lng'=>$latlng[1]); 
}

var_dump($new_array);

这应该为您提供一个lat / long值的数组。

答案 1 :(得分:0)

我想这个:

$lat = array($latlng[0]);
$lng = array($latlng[1]);

应该是:

$lat = $latlng[0];
$lng = $latlng[1];

答案 2 :(得分:0)

我认为,在$ latlng [..]周围发现数组(..)可以解决问题。

$lat = $latlng[0];
$lng = $latlng[1];

答案 3 :(得分:0)

一些观察结果。

1)您可以register xpath namespaces而不是替换字符串
2)array('lat'=>$latlng[0],'lng'=>$latlng[1]);什么都不做。这是一个死人的商店 3)而不是

$lat = array($latlng[0]);
$lng = array($latlng[1]);
echo $lat;
echo $lng;  

你可以这样做:echo $latlng[0].'-'.$latlng[1];
如果您尝试echo数组,则始终会获得Array 使用特定索引来回显单个元素。

4)或者你可以使用list直接存储变量
list($lat, $long) = explode(' ',trim($item->point));

修改 要将多个结果插入数据库,请将结果存储在数组中:

$lat_long = array();
foreach($items as $item){
    $lat_long[] = explode(' ', $item);
}

然后迭代遍历此数组并执行数据库插入。

foreach($lat_long as $point){   
  //do SQL injection prevention as well
  //INSERT INTO your_table (`lat`, `long`) VALUES ($point[0], $point[1]);
}