2009-09-03 126 views
1

我在一個綁定中,多次在不同的表單項的頁面上,我只在表單項中插入一個css div類,如果error_array鍵存在,這是我如何突出顯示其中有錯誤的表單項。如何檢查數組鍵是否存在如果數組不存在PHP

工程,很好,如果我有一個錯誤,因爲那麼我的錯誤數組已設置,問題是在設置錯誤之前,它會嘗試查找不存在的數組鍵。我想使用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';?> 

,我需要有它是可能的話

回答

4

如果isset是假的,第二條語句1行代碼不會被執行,因爲解析器知道兩個語句都必須是真的才能使整個語句成爲真實。

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

,但我會建議你初始化你正在使用變量...

+0

另外關於您的評論,沒有這個初始化這個變量? – JasonDavis 2009-09-03 19:57:51

+0

不,它不會,因爲即使'array_key_exists'自動生成$ signup_errors(並且我非常肯定它沒有),那麼'isset()'的失敗將導致它不會運行。 'isset()'顯然不允許對它測試的變量進行變形。 – Guss 2009-09-04 00:17:45

0

我不是PHP語法不夠熟悉,但是這聽起來像是短路評價工作,即||或& &,其中如果第一項可以單獨確定結果(如果它在||中爲真或在& &中爲假)則不評估第二項。

0

這是一個古老的問題,但它是一個更簡單的答案。 isset檢查數組和密鑰。這個偉大的工程,如果陣列未設置不產生任何通知:

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

或者:

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