如果PHP中不存在该数组,如何检查数组键是否存在

时间:2009-09-03 19:43:03

标签: php arrays

我在一个页面上多次绑定不同的表单项,我只在一个表单项中插入一个css div类,如果存在error_array键,这就是我如何突出显示错误的表单项

工作,很好,如果我有错误,因为我的错误数组已设置,问题是在设置错误之前,它试图寻找不存在的数组键。我在想使用php的isset函数首先是票但我想你不能将isset与另一个函数结合起来?


<?php
//this works
$search_array = array('first' => 1, 'second' => 4);

if (array_key_exists('first', $search_array)){
    echo "good";
}


// this does not work, will give write errors
$search_array = array('first' => 1, 'second' => 4);

if (isset(array_key_exists('first', $search_array))){
    echo "good";
}

// Here is  1 example how I need to make the end result work
$country_class = (array_key_exists('country', $signup_errors)) ? ' signup_error' : ' signup_good';
echo '<select name="country" id="country" class="textarealong ' .$country_class. '"/>';
?>

在其他部分我像这样使用它

<?PHP echo(array_key_exists('password', $signup_errors)) ? ' signup_error' : ' signup_good';?>

如果可能的话,我需要让它成为一行代码

3 个答案:

答案 0 :(得分:4)

如果isset为false,则第二个语句不会被执行,因为解析器知道两个语句都必须为true才能使整个语句成立。

   $country_class = ( isset($signup_errors) && array_key_exists('country', $signup_errors)) ? ' signup_error' : ' signup_good';

但我建议你初始化你正在使用的每个变量......

答案 1 :(得分:0)

我对PHP语法不够熟悉,但这听起来像是一个短路评估工作,即||或者&amp;&amp;,如果单独的第一个术语可以确定结果(如果在||中为True,在&amp;&amp;中为False),则不评估第二个术语。

答案 2 :(得分:0)

这是一个老问题,但这是一个更简单的答案。 isset检查数组和密钥。这很有用,如果没有设置数组,则不会生成任何通知:

if (isset($search_array['first'])){
    echo "good";
}

或者:

$country_class = isset($signup_errors['country']) ? ' signup_error' : ' signup_good';