0

我有一个函数可以检查给定父 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;
}

如果我使用:print_r(categoryChild($folder_id));我得到例如以下内容:

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

我希望能够简单地检查数组中的数字......我试过了:

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

但它根本什么都不做。

有没有办法做到这一点?

4

2 回答 2

1

你想要的是检查key没有value

in_array您正在检查是否value存在

您必须使用array_key_exists才能检查key

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

要在嵌套数组中查找键,您可以使用以下命令:

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

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

笔记:

25 是 INT 不是字符串

一个有用的链接如何防止 PHP 中的 SQL 注入

更新

如果你的数组是这样的

$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
于 2013-10-16T19:02:16.153 回答
1

您可以使用array_key_exists()或简单的isset

if(isset($ARR[$key]))
     echo "yep!";
于 2013-10-16T19:18:59.180 回答