2011-08-15 14 views
1

私はフィードからXMLを抽出しています。PHP分離型配列変数

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

私はこのコードを実行すると、変数は「配列」でのMySQL に挿入しています2つの変数が含まれています題しタグがあります。私はその後、私はそれらが(コードの最後の2行で)文をエコー配置すると、変数が画面にechodを取得

$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; 
} 

次の分からない、変数を抜け出すためにエキスを配置します。しかし、私は配列の外にこれらのvaraiblesを配置すると、値はエコーを取得しません。 これらの変数を配列の外部に取得しようとしています。そのため、これらの変数をデータベースに挿入できます。私はvaraiablesを抽出しようとしましたが、これは画面に 'Array'として出力されます。これらの変数を配列から抽出するために何をする必要があるのか​​は不明です。おかげで、私はこの考えて

+0

は1つだけの緯度経度、またはそれ以上ですか? – Prisoner

答えて

0

いくつかの観察。

1)あなたのことができregister xpath namespaces代わりに文字列
2)に置き換えるのarray('lat'=>$latlng[0],'lng'=>$latlng[1]);は何もしません。それはデッドストアです。代わりにあなたが行うことができます

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


3):echo $latlng[0].'-'.$latlng[1];
あなたはecho配列にしようとした場合、あなたは常にArrayを取得します。
特定のインデックスを使用して個々の要素をエコーし​​ます。

4)別の方法としては、配列に結果を格納し、データベースへの複数の結果を挿入するには、変数を直接
list($lat, $long) = explode(' ',trim($item->point));

編集 を保存するためにlistを使用することができます。

$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]); 
} 
+0

こんにちはブライアン、あなたの提案は私にとってもっと意味があります...しかし私が実装するとき、値は同じです。リスト($ lat、$ long)= explode( ''、trim($ item-> point));緯度と経度はすべて23の項目で常に同じです。 –

+0

@matt colley編集を参照してください –

+0

ああ...私は盲目の男が言った参照してください!ブライアンありがとう! –

0

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

は次のようになります。緯度と経度$ [..]の周りに配列(..)をObmitting

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

は、トリックを行うだろう、と思います。このようなバージョンであなたのforeachを交換し

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

...

$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); 

はこれがあなたの緯度/経度の値の配列を与える必要があります。