我在一个页面上多次绑定不同的表单项,我只在一个表单项中插入一个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';?>
如果可能的话,我需要让它成为一行代码
答案 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';