我从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上提取,但这会以“数组”打印回屏幕...不确定我需要做什么才能从数组中提取这些变量。谢谢,
答案 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]);
}