Reputation: 23999
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
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
Reputation: 1089
You can use array_key_exists() or a simple isset.
if(isset($ARR[$key]))
echo "yep!";
Upvotes: 1