user2465180
user2465180

Reputation: 53

PHP "if" statement looking for between two numbers

I need help on a if statement here is what is going on.

I have a value being pulled $paint['product_id']

I need to say if that value is between 81501 - 81599 or 81701 - 81799 say blah

else if that value is between 81001 - 81099 or 81301 - 81399 say blah2

else if 86501 - 86599 or 86001 - 86099 or 85001 - 85099 say blah3

and say nothing if it does not apply.

What id did try

<? if ($paint['product_id'] >= 81501 && $x <= 81599 || $paint['product_id'] >= 81701 && $x <= 81799):?>
blah
<? elseif ($paint['product_id'] >= 81001 && $x <= 81099 || $paint['product_id'] >= 81301 && $x <= 81399):?>
blah2
<? elseif ($paint['product_id'] >= 86501 && $x <= 86599 || $paint['product_id'] >= 86001 && $x <= 86099 || $paint['product_id'] >= 85001 && $x <= 85099):?>
blah3
<? endif;?>

The problem I am having is "blah" is showing up on items in the blah3 category.

Hope that makes sense and thanks in advance for any help!

Upvotes: 5

Views: 37418

Answers (7)

Amit Kumar
Amit Kumar

Reputation: 1

Hellow i'm going to desribe how to use if condition between two numbers in PHP in easy steps.

<?php

$a= 65;
$b= 9;

if($a<$b)
    {
        echo  "$a this is correct";
    }

else{
    echo "$b this is greater than $a";
}


?>

Upvotes: 0

Tom Doe
Tom Doe

Reputation: 329

if ($paint['product_id'] >= 81501 && $x <= 81599 || $paint['product_id'] >= 81701         && $x <= 81799){
    echo "blah";
}
elseif ($paint['product_id'] >= 81001 && $x <= 81099 || $paint['product_id'] >= 81301 && $x <= 81399){
    echo "blah2";
}
elseif ($paint['product_id'] >= 86501 && $x <= 86599 || $paint['product_id'] >= 86001 && $x <= 86099 || $paint['product_id'] >= 85001 && $x <= 85099){
    echo "blah2";
}

Upvotes: 0

mzedeler
mzedeler

Reputation: 4369

Replace $x with $paint['product_id'].

Upvotes: 6

Floris
Floris

Reputation: 46365

Consider creating a user defined function, e.g.

function between($x, $lim1, $lim2) {
  if ($lim1 < $lim2) {
    $lower = $lim1; $upper = $lim2;
  }
  else {
    $lower = $lim2; $upper = $lim1;
  }
  return (($x >= $lower) && ($x <= $upper));
}

Then the rest of your code becomes much more legible:

if between($paint['product_id'], 81501, 81599) blah;

As given, the "between" function will work even if you don't know ahead of time whether the first or the second argument is larger.

Upvotes: 2

Robert
Robert

Reputation: 20286

there are at least 3 ways to solve it.

First solution has been already posted by users

Second solution is to create between function and use it.

function between($number, $from, $to)
{
   return $number>$from && $number<$to;
}

  if(between($paint['product_id'], 81501, 81599) || $paint['product_id'], 81701, 81799))
   echo 'blah'; 
  else if(between($paint['product_id'], 81001, 81099) || $paint['product_id'], 81301, 81399))
   echo 'blah2';

  else if(between($paint['product_id'], 86501, 86599) || $paint['product_id'], 86001, 86099) || $paint['product_id'], 85001, 85099))
   echo 'blah3';
  else echo 'it does not apply';

Third solution is to use range() function and in_array() function

example if(in_array($paint['product_id'], range(81501, 81599)))

rest goes the same

Upvotes: 1

Orangepill
Orangepill

Reputation: 24645

You need more parenthesis

<?php
<? if (($paint['product_id'] >= 81501 && $x <= 81599) || ($paint['product_id'] >= 81701 && $x <= 81799)):?>
blah
<? elseif (($paint['product_id'] >= 81001 && $x <= 81099) || ($paint['product_id'] >= 81301 && $x <= 81399)):?>
blah2
<? elseif (($paint['product_id'] >= 86501 && $x <= 86599) || ($paint['product_id'] >= 86001 && $x <= 86099) || ($paint['product_id'] >= 85001 && $x <= 85099)):?>
blah3
<? endif;?>

Upvotes: 1

Ivan Yonkov
Ivan Yonkov

Reputation: 7034

You should group them with brackets:

if( ($x > 10 && $x < 20) || ($x > 40 && $x < 50) ) { ...

Upvotes: 4

Related Questions