我有以下陣列:php in_array檢查數組的最佳方式是什麼?
if (empty($a)||empty($b)||empty($c)){
if(empty($a)){
$errors[]="a is empty";
}
if(empty($b)){
$errors[]="b is empty";
}
if(empty($c)){
$errors[]="c is empty";
}
}...
我如何與if (in_array('??'; $errors))
檢查數組充滿$a
,$b
或$c
錯誤訊息?
我知道這樣說:
$errors = array(
'a' => 'Please enter a.',
'b' => 'Please enter b.',
'c' => 'Please enter c.'
);
在這裏,我可以簡單地用if (in_array('a'; $errors))
檢查是否存在對a
或不是一些錯誤消息。我的問題是,我不僅有一個錯誤消息的a,b或c。所以,我期待像這樣的方式,結合了這兩種方法:
$errors = array(
'a' => if (empty ($a) || $specific_error1_for_a || $specific_error2_for_a),
'b' => if (empty ($b) || $specific_error1_for_b || $specific_error2_for_b),
'c' => if (empty ($c) || $specific_error1_for_c || $specific_error2_for_c),
);
我正在尋找一種方式來搜索這些元素a,b
或c
的失敗消息的情況下,陣列errors[]
。
主要問題是,我想有一個變量或其他的東西,我可以搜索時使用in_array。爲了得到更具體的:
我有我的每個輸入字段的errorlayer。因此,我需要搜索整個陣列errors[]
如果有一個特定的錯誤消息對特定輸入字段:
<input type="text" id="a" name="a" value="<?php echo isset ($_POST['a'])? $_POST['a'] : ''; ?>" tabindex="10" autocomplete="off"/><?php if (**in_array(...., $errors)**):?><span class="error"><?php echo $errors['a'];?></span><?php endif;?>
的問題是,就像我已經說過,我不是唯一一個錯誤消息的情況下更對於每個輸入字段,這樣我會有這樣的事情:
(**in_array('a is empty' || 'a is too short' || 'a is too long' ..., $errors)**)
這就是爲什麼我認爲這將是更好的搜索只是一個這樣的變量:
(**in_array($a, $errors)**)
我真的很感激,如果有人可以給我這方面的建議。非常感謝。
'array_intersect'可能有用(因爲它類似於具有多個值的in_array),但我並不完全清楚你在這裏要做什麼。 – Brilliand 2012-07-20 10:00:45
我更新了我的問題。希望現在清楚。 – bonny 2012-07-20 10:06:53