PHP拆分数组变量

我从Feed中提取XML。 有一个标签:</ p>

 &lt; georss:point&gt; 34.234 -34.435&lt; / georss:point&gt;

</ code> </ pre>

包含我插入MySQL的两个变量
当我运行此代码时,变量是'array'。 然后我放置一个提取来分解变量,不确定下一个</ p>

  $ xmlString = str_replace('georss:point','point',$ xmlString);

$ xml = new SimpleXMLElement($ xmlString);

$ items = $ xml-&gt; xpath('channel / item');

$ closeItems = array();

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

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

echo $ lat;
echo $ lng;

}
</ code> </ pre>

当我放置这些echo语句时(在最后两行代码中),变量会进入屏幕。 但是,当我将这些变量放在数组之外时,这些值不会得到回应。

我试图将这些变量放在数组之外,这样我就可以将这些变量插入到数据库中。 我已尝试在varaiables上提取,但这会以“数组”打印回屏幕...不确定我需要做什么才能从数组中提取这些变量。 谢谢,</ p>
</ div>

展开原文

原文

I am extracting XML from a feed. There is a tag entitled:

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

which contains two variables I am inserting into MySQL When I run this code, the variable is 'array'. I then place an extract to break out the variables, unsure of next

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

When I place those echo statements (in the last two lines of code), the variables get echod to the screen. However when I place these varaibles outside of the array, the values do not get echod. I am attempting to get these variables outside of the array, so that I can insert these variables into the database. I have tried extract on the varaiables, but this prints back to the screen as 'Array'... unsure of what I need to do to extract these variables from the array. Thanks,

duandingyou3331
duandingyou3331 只有一个纬度和长,或许多?
大约 9 年之前 回复

4个回答



一些观察结果。</ p>

1)你可以注册xpath名称空间而不是替换字符串

2) array('lat'=&gt; ; $ latlng [0],'lng'=&gt; $ latlng [1]); </ code>什么都不做。 这是一个死店。

3)而不是</ p>

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

</ code> </ pre>

你可以这样做: echo $ latlng [0] .'-'。$ latlng [1]; </ code>

如果 你尝试 echo </ code>一个数组,你将总是得到 Array </ code>。

使用一个特定的索引来回显一个单独的元素。</ p>

< p> 4)或者你可以使用 list </ code> </ a >直接存储变量

list($ lat,$ long)= explode('',trim($ item-&gt; point)); </ code> </ p>
\ n

编辑</ strong>
要将多个结果插入数据库,请将结果存储在数组中:</ p>

  $ lat_long = array(); \  nforeach($ items as $ item){
$ lat_long [] = explode('',$ item);
}
</ code> </ pre>

然后再遍历这个 数组并执行数据库插入。</ p>

  foreach($ lat_long as $ point){
//也执行SQL注入预防
// INSERT INTO your_table(latlong)VALUES($ point [0],$ point [1]);
}
</ code> </ pre>
</ div>

展开原文

原文

Some observations.

1) you can register xpath namespaces instead of replacing in the string
2) array('lat'=>$latlng[0],'lng'=>$latlng[1]); does nothing. It is a dead store.
3) Instead of

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

You can do: echo $latlng[0].'-'.$latlng[1];
If you try to echo an array, you will always get Array.
Use a specific index to echo an individual element.

4) Alternatively you could use list to store the variables directly
list($lat, $long) = explode(' ',trim($item->point));

Edit To insert multiple results into your database, store the results in an array:

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

Then later iterate through this array and do your database insert.

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

doupang5433
doupang5433 啊......“我看到了'瞎子说! 非常感谢Brian!
大约 9 年之前 回复
dongwo5110
dongwo5110 科利见编辑
大约 9 年之前 回复
doutan2228
doutan2228 嗨Brian,你的建议对我来说更有意义......但是当我实现时,值是相同的。 list($ lat,$ long)= explode('',trim($ item-> point)); 所有23个项目的lat和lng始终相同。
大约 9 年之前 回复



用这样的版本替换你的foreach ... </ p>

  $ new_array =  array(); 
foreach($ items as $ item)
{
$ latlng = explode('',trim($ item-&gt; point));
$ new_array [] = array('lat'= &GT; $经纬度[0], 'LNG'=&GT; $经纬度[1]);

}

var_dump($ new_array);
</ code> </ pre>

这会给你一个lat / long值的数组。</ p>
</ DIV>

展开原文

原文

Replace your foreach with a version like this...

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

this should give you a array of your lat/long values.



我认为:</ p>

  $ lat = array($ latlng [0]  ); 
$ lng = array($ latlng [1]);
</ code> </ pre>

应为:</ p>

   $ lat = $ latlng [0]; 
$ lng = $ latlng [1];
</ code> </ pre>
</ div>

展开原文

原文

I think this:

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

should be:

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



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

  $ lat = $ latlng [0]; 
$ lng = $ latlng [1];
</ code> </ pre>
</ div>

展开原文

原文

Obmitting the array(..) around $latlng[..] would do the trick, I think.

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐