检查数组中是否存在某些内容

时间:2014-04-01 11:07:19

标签: php arrays wordpress

我在wordpress中编写if语句时遇到一些问题。 我的插件将自定义注册字段存储在数据库的一行中,比如说“custom_fields”。当我使用get_user_meta打印custom_fields时,我得到了一个存储在那里的所有信息的数组,例如:

Array ( [0] => Array ( [invoice_company_name] => x [invoice_nip] => x [invoice_street] => x [invoice_street_number] => x [invoice_post_code] => x [invoice_city] => x [invoice_country] => x [birth_date] => x [birth_city] => x [district] => x ) ) 

我想检查是否存在以发票开头的所有字段。当然,'x'在哪里有真正的价值。

我发现函数in_array(),所以尝试做这样的事情,但它不起作用

$user_ID = get_current_user_id();
$all_meta_for_user = get_user_meta( $user_ID, 'wp_s2member_custom_fields', false );
print_r( $all_meta_for_user );
if (in_array("[invoice_company_name]", $all_meta_for_user)) {
echo "exist";} else {echo 'dont exist';}

我得到'不存在':)出了什么问题? 另外,我可以一次检查所有值吗?喜欢in_array([1st]&& [2nd]&& [3rd])?

谢谢!

2 个答案:

答案 0 :(得分:2)

尝试

if (in_array("invoice_company_name", $all_meta_for_user[0])) {

答案 1 :(得分:1)

如果您的数组是多维的,您可以使用 array_key_exists() 按键搜索:

foreach($all_meta_for_user as $key=>$val){
  if (array_key_exists('invoice_company_name', $val)) 
    {
      echo "exist in key ".$key;
    } 
  else 
    {
      echo "does not exist in key ".$key;
    }
}

<强> Demo