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如果当前代码正确检查经度(是吗?),那么是什么阻止您添加纬度条件?