Php 检查数字是否在指定的一组数字之间?
此代码:Php 检查数字是否在指定的一组数字之间?,php,xml,Php,Xml,此代码: $url = ('example.url'); function Feed($url) { $feed = simplexml_load_file($url) or die('Cannot Connect'); $result = array(); foreach ($feed->channel->item as $content) { array_push($result, $content); } return $result; }
$url = ('example.url');
function Feed($url) {
$feed = simplexml_load_file($url) or die('Cannot Connect');
$result = array();
foreach ($feed->channel->item as $content) {
array_push($result, $content);
}
return $result;
}
feed.php^^
require_once 'feed.php';
$title = '123';
foreach(Feed('example.url') as $f ) {
if (strpos($f->title, $title) !== false)
echo $f->children('georss', true)->children('gml', true)->children('gml', true). "<br>";
}
如何检查数字是否介于我指定的数字之间
示例:
59.838314 6.865717
59.662615 10.569110
59.709940 10.690916
经度介于59.68000
和59.85000
介于5.510000
和8.750000
它将输出59.838314 6.865717
编辑:显示已尝试的内容:
foreach(提要(“示例”)为$f){
if(strpos($f->title,$title)!==false)
如果($f->children('georss',true)->children('gml',true)->children('gml',true)>=59.68000&&$f->children('georss',true)->children('gml',true)->children('gml',true)->children('gml',true)->children children('gml',true)。“
”;
}
}
这里我只检查长练习曲。我想检查两者
非常感谢您的帮助!在PHP中比较浮点值可能会有问题。 如果需要比较浮点值,可以使用bccomp()比较浮点值
$a = '59.68000';
$b = '59.85000';
echo between($a, $b, '59.68001') . "\n"; // in range
echo between($a, $b, '59.68000') . "\n"; // exact match
echo between($a, $b, '59.88000') . "\n"; // higher than range
echo between($a, $b, '59.67000') . "\n"; // lower than range
function between($lower, $upper, $value)
{
// Value is greater than lower bound of range
$check1 = bccomp($value, $lower, 6) >= 0;
// Value is less than upper bounds of range
$check2 = bccomp($upper, $value, 6) >= 0;
if ( $check1 && $check2 ) {
return true;
}
return false;
}
使用以下功能:
foreach(Feed('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=601') as $f ) {
if (strpos($f->title, $title) !== false) {
$long = $f->children('georss', true)->children('gml', true)->children('gml', true);
$lat = $f->lattitude_value(); // Replace me!!
if ( between('59.68000', '59.85000', $long) && between('5.510000', '8.750000', $lat) ) {
echo $long . ' ' . $lat . "<br>";
}
}
}
foreach(提要)https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=601“)作为$f){
if(strpos($f->title,$title)!==false){
$long=$f->children('georss',true)->children('gml',true)->children('gml',true);
$lat=$f->latitude_value();//替换我!!
如果(介于('59.68000'、'59.85000'、$long)和('5.510000'、'8.750000'、$lat')之间){
回显$long.'.$lat.“
”;
}
}
}
在PHP中比较浮点值可能会有问题。
如果需要比较浮点值,可以使用bccomp()比较浮点值
$a = '59.68000';
$b = '59.85000';
echo between($a, $b, '59.68001') . "\n"; // in range
echo between($a, $b, '59.68000') . "\n"; // exact match
echo between($a, $b, '59.88000') . "\n"; // higher than range
echo between($a, $b, '59.67000') . "\n"; // lower than range
function between($lower, $upper, $value)
{
// Value is greater than lower bound of range
$check1 = bccomp($value, $lower, 6) >= 0;
// Value is less than upper bounds of range
$check2 = bccomp($upper, $value, 6) >= 0;
if ( $check1 && $check2 ) {
return true;
}
return false;
}
使用以下功能:
foreach(Feed('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=601') as $f ) {
if (strpos($f->title, $title) !== false) {
$long = $f->children('georss', true)->children('gml', true)->children('gml', true);
$lat = $f->lattitude_value(); // Replace me!!
if ( between('59.68000', '59.85000', $long) && between('5.510000', '8.750000', $lat) ) {
echo $long . ' ' . $lat . "<br>";
}
}
}
foreach(提要)https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=601“)作为$f){
if(strpos($f->title,$title)!==false){
$long=$f->children('georss',true)->children('gml',true)->children('gml',true);
$lat=$f->latitude_value();//替换我!!
如果(介于('59.68000'、'59.85000'、$long)和('5.510000'、'8.750000'、$lat')之间){
回显$long.'.$lat.“
”;
}
}
}
我反复思考,发现这是解决我问题的最佳方法:
foreach(Feed('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=601') as $f ) {
if (strpos($f->title, $title) !== false){
$pos = $f->children('georss', true)->children('gml', true)->children('gml', true);
list($number1, $number2) = explode(' ', $pos);
if ($number1 > 59.68000 && $number1 < 59.85000){
if ($number2 > 5.510000 && $number2 < 8.750000){
echo $f->children('georss', true)->children('gml', true)->children('gml', true). "<br>";
}
}
}
}
foreach(提要)https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=601“)作为$f){
if(strpos($f->title,$title)!==false){
$pos=$f->children('georss',true)->children('gml',true)->children('gml',true);
列表($number1,$number2)=分解(“”,$pos);
如果($number1>59.68000&&$number1<59.85000){
如果($number2>5.510000&&number2<8.750000){
echo$f->children('georss',true)->children('gml',true)->children('gml',true)。“
”;
}
}
}
}
我反复思考,发现这是解决我问题的最佳方法:
foreach(Feed('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=601') as $f ) {
if (strpos($f->title, $title) !== false){
$pos = $f->children('georss', true)->children('gml', true)->children('gml', true);
list($number1, $number2) = explode(' ', $pos);
if ($number1 > 59.68000 && $number1 < 59.85000){
if ($number2 > 5.510000 && $number2 < 8.750000){
echo $f->children('georss', true)->children('gml', true)->children('gml', true). "<br>";
}
}
}
}
foreach(提要)https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=601“)作为$f){
if(strpos($f->title,$title)!==false){
$pos=$f->children('georss',true)->children('gml',true)->children('gml',true);
列表($number1,$number2)=分解(“”,$pos);
如果($number1>59.68000&&$number1<59.85000){
如果($number2>5.510000&&number2<8.750000){
echo$f->children('georss',true)->children('gml',true)->children('gml',true)。“
”;
}
}
}
}
您是否尝试过达到预期的结果?是的,但它们似乎太离谱了。我希望在这里得到一些想法,我可以进一步探索。我们无法帮助您解决一些我们看不到的问题。请在问题中包括您的尝试,以及结果和您已经完成的调试。@PatrickQ updatedIf您当前的代码correctly检查经度(是吗?)那么,是什么阻止了您为纬度添加条件?您是否尝试过实现期望的结果?是的,但它们似乎太离谱了。我希望在这里得到一些想法,我可以进一步探索,我们无法帮助您解决一些我们看不到的问题。请在问题中包括您的尝试以及结果,以及您所做的调试已完成。@PatrickQ Updated如果当前代码正确检查经度(是吗?),那么是什么阻止您添加纬度条件?