2016-03-01 39 views
0

我對PHP代碼的現有件工作的工作,並嘗試去了解它,以便調試問題:isset()函數似乎並沒有一個數組

echo "Got here !!!\n"; 
var_dump($aHeaders); 
if (isset($aHeaders['SALESCHANNEL'])) { 
    echo "aHeaders['SALESCHANNEL'] is set\n"; 
    ... 
} elseif (isset($aHeaders['SALESUNIT'])) { 
    echo "aHeaders['SALESUNIT'] is set\n"; 
    ... 
} 
echo "Got there !!!\n"; 

,我得到下面的輸出:

Got here !!! 
array(1) { 
["EMAIL,FIRSTNAME,LASTNAME,PHONE,TITLE,DATEOFBIRTH,SALESUNIT,LANGUAGE,STATUS,IS_RESELLER,CUSTOMDATE,ADDRESS_1,ADDRESS_2,CITY,COUNTRY,ZIPCODE,"]=> 
int(0) } 
Got there !!! 

我在PHP沒有深刻的專家,但我相信我應該看到:

aHeaders['SALESUNIT'] is set 
輸出

。出了什麼問題?

我的PHP版本是PHP 30年5月5日,如果它很重要。

+7

你的數組實際上它只有1個元素,其中包含的數據是一個巨大的字符串,而不是一個關聯數組。 isset()只有在它是一個關聯數組時纔會起作用。 –

+2

'echo'也是不正確的,因爲你忘記了變量前面的'$'-sign。 – Chris

+0

如果需要檢查是否SALESUNIT是在逗號分隔的列表中的值,則使用爆炸函數,那麼in_array(): '$ arrHeaders =爆炸( '',$ aHeaders [0]);如果(in_array('SALESUNIT',$ arrHeaders){ echo'found'; } else { echo'not there'; }檢查PHP文檔[isset()](http:// php達網絡/ isset)和[in_array()](http://php.net/in_array) – thorne51

回答

7

什麼,你現在已經是這樣的:

$arr1 = array('EMAIL,FIRSTNAME,LASTNAME,PHONE,TITLE,DATEOFBIRTH,SALESUNIT,LANGUAGE,STATUS'); 
如果您有以下

isset()函數只會工作:

$arr2 = array(
    'EMAIL' => 'blah', 
    'FIRSTNAME' => 'blah', 
    'LASTNAME' => 'blah', 
    'PHONE' => 'blah', 
    'TITLE' => 'blah', 
    'DATEOFBIRTH' => 'blah', 
    'SALESUNIT' => 'blah', 
    'LANGUAGE' => 'blah', 
    'STATUS' => 'blah' 
); 
0

使用下面的代碼

echo "Got here !!!\n"; 
var_dump($aHeaders); 
// get the keys to array 
$array_keys = array_keys($aHeaders) 
// explode the array keys with comma 
$array_values = explode(',',$array_keys[0]); 
if (in_array('SALESCHANNEL',$array_values)) { 
    echo "aHeaders['SALESCHANNEL'] is set\n"; 
    ... 
} elseif (in_array('SALESUNIT',$array_values)) { 
    echo "aHeaders['SALESUNIT'] is set\n"; 
    ... 
} 
echo "Got there !!!\n"; 
+1

爲什麼OP應該這樣做?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –

相關問題