douliang2167 2013-10-16 18:47
浏览 33
已采纳

从函数结果 - 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?

  • 写回答

2条回答 默认 最新

  • douqing0713 2013-10-16 19:02
    关注

    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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?