如何检查所有数组键是否包含子键

时间:2015-09-05 12:37:50

标签: php

如何检查所有密钥是否包含子密钥。

$array1 = array("key1"=>"sub1", "key2"=>"sub2"); // true

$array2 = array("key1", "key2"=>"sub2"); // false
$array3 = array("key1"=>"sub1", "key2"); // false
$array4 = array("key1", "key2"); // false

if(checkSubKey($array1)) 
    echo "true";
else
    echo "false";

非常感谢。

4 个答案:

答案 0 :(得分:2)

您也可以使用foreach。

 $flag=true; 
 foreach($arr as $key=>$value) 
{ 
  if(!($key && $value))
   {  
    $flag= false; 
    break;  
   } 
 }

if($flag==false)
{ 
   //your stuff 
} 

答案 1 :(得分:1)

尝试array_key_exists() 如果数组有键则返回true,否则返回false。

 if(array_key_exists("key",$yourarray))
 {
      echo "exists";
  }

 {
      else "not exist";
  }

答案 2 :(得分:1)

$array1 = array("key1"=>"sub1", "key2"=>"sub2");


$hasKey = true;
foreach ($array1 as $key => $value)
{
    if(!is_string($key))
    {
        $hasKey = false;
    }
}

var_dump($hasKey); //true

$array2 = array("key1", "key2"=>"sub2");

$hasKey = true;
foreach ($array2 as $key => $value)
{
    if(!is_string($key))
    {
        $hasKey = false;
    }
}

var_dump($hasKey); //false

如果您不指定自己的数字键,此方法将起作用。所有阵列位置都有一个索引。如果您不指定一个,默认情况下它将是数字。这种方法利用了这一点,假设如果数组元素没有基于字符串的键,那么它的键就丢失了。虽然技术上不正确,但这足以满足你的榜样。

答案 3 :(得分:0)

为了确保数组中存在特定的键,您可以使用php的array_key_exists方法:

if (array_key_exists("key1", $array1))
{
   echo "Key exists!";
}

您也可以使用正则表达式,虽然稍有不同(使用preg_match方法):

foreach($array1 as $key=> $value){
     if(preg_match("/^key/", $key)){ //regular expression
         echo "this key exists";
     }
}

或者,如果要确定某个键本身是否包含数组(,即子数组),则可以执行以下操作:

foreach($array1 as $a){
   if(is_array($a)){
       //do some stuff on the inner array
   }
}