StudioTime
StudioTime

Reputation: 23999

Check if key exists in array from function result - PHP

I have a function which checks the children on a tree given the parent ID:

function categoryChild($id) {

    $mysqli = dbConnect();

    $query = "select folders_id, childof from folders where childof = $id";
    $result = $mysqli->query($query);

    $children = array();

    if(mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_array($result)) {
            $children[$row['folders_id']] = categoryChild($row['folders_id']);
        }
    }

    return $children;
}

If I use: print_r(categoryChild($folder_id)); I get e.g. the following:

Array ( [21] => Array ( [22] => Array ( ) ) [24] => Array ( [25] => Array ( ) ) ) 

I want to be able to check simply check against the numbers in the array(s)...I've tried:

if(in_array ("25", categoryChild($folder_id))){
    echo 'yeah';
};

But it simply does nothing.

Is there a way to do this?

Upvotes: 0

Views: 1007

Answers (2)

Emilio Gort
Emilio Gort

Reputation: 3470

What you want is to check the key no the value

in_array you are checking if the value exist

You have to use array_key_exists in order to check the key

if (array_key_exists(25, categoryChild($folder_id))) {
    echo 'yeah';
 }

To find a key in nested array you can use this:

 $keySearch=25;
 $array=categoryChild($folder_id);

foreach ($array as $array_data) {
    if (array_key_exists($keySearch, $array_data)) {
     echo 'yeah';
    }
}

NOTE:

25 is INT no a string

A useful link how to prevent SQL Injections in PHP

UPDATE

if your array is something like this

$array = array(
    21 => '',
    24 => array(
        22 => '',
        25 => ''
    )
);

$keySearch = 21;

if (count($array) == count($array, COUNT_RECURSIVE)) {
//  single array
  if (array_key_exists($keySearch, $array)) {
    $result = 'yeah1';
  }else{
    $result = 'no';
  }
} else {
//  nested array;
  foreach ($array as $value) {
    if (array_key_exists($keySearch, $array)) {
      $result = 'yeah2';
    }else{
      $result='no';
    }
  }
}

echo $result;//output yeah2

Upvotes: 1

Kilise
Kilise

Reputation: 1089

You can use array_key_exists() or a simple isset.

if(isset($ARR[$key]))
     echo "yep!";

Upvotes: 1

Related Questions