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条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路