0

I have the following array:

Array
(
    [0] => Array
        (
            [video_id] => 161162806
        )

    [1] => Array
        (
            [video_id] => 161736574
        )

    [2] => Array
        (
            [video_id] => 156382678
        )    
)

I try to find a value, but even though it's in the array it doesn't find it.

if(in_array("161162806", $safe, true)) {      
 echo "approved video";
  } else { 
  echo "non-approved video";
 }

What am I doing wrong?

2 Answers2

2

It is because you have arrays in array (multidimensional array).

You have to loop over :

foreach($safe as $s) {

if(in_array("161162806", $s)) {      
 echo "approved video";
  } else { 
  echo "non-approved video";
 }
}

PS : Remove true param if you want to assimilate integers and strings :

123 or "123"

Delphine
  • 861
  • 8
  • 21
0

you have declared a 'strict' check on in_array.

Because of this it will check the type as well. Seeing as your search parameter is a string, it wont match the integer in the array.

try this (when you've sorted the below mentioned issue):

if(in_array("161162806", $safe)) {      
   echo "approved video";
} else { 
   echo "non-approved video";
}

but you have separate arrays in the one your'e checking. in_array will only check the direct values of the array provided. Have a look at this question for a possible solution to that part of the problem. (Or Delphines answer)

Community
  • 1
  • 1
DevDonkey
  • 4,835
  • 2
  • 27
  • 41