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_arrayvalueが存在するかどうかを確認しています

を確認するには、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 に答える