2010-06-13 54 views
0

以下代碼輸出would,我們期望它輸出12/5/10。原因是array_search僅適用於關聯數組,而explode返回無鍵數組,因此$kfalse$k+11將無鍵陣列轉爲關聯陣列

$s = 'We would like to book a double room form 12/5/10 for three nights.'; 
$s_arr = explode(' ', $s); 
$k = array_search('from', $s_arr); 
$from = $s_arr[$k+1]; 
echo $from; 

我們可以用這樣的

$s_arr = array(
    0 => 'We', 
    1 => 'would', 
    2 => 'like', 
    3 => 'to', 
    4 => 'book', 
    5 => 'a', 
    6 => 'double', 
    7 => 'room', 
    8 => 'form', 
    9 => '12/5/10', 
    10=> 'for', 
    11=> 'three', 
    12=> 'nights.'); 
$k = array_search('from', $s_arr); 
$from = $s_arr[$k+1]; 
echo $from; 

字面定義這一次的正確值超出這是12/5/10驗證這一點。

有沒有辦法將一個無鍵數組轉換爲關聯數組?

+0

剛試過第二個代碼塊,它也失敗了!我錯過了什麼? – 2010-06-13 16:17:23

+1

你爲什麼這麼做?看來這個功能的目的是提取日期。如果是這樣,那麼使用正則表達式是有意義的。對於這些事情,preg_match比你的數組爆炸往返和array_search更快。 – mario 2010-06-13 17:23:03

+0

@mario - 這些都是開始實施智能響應器的步驟。很多會改變,但現在爆炸+搜索會做。 – 2010-06-13 17:30:53

回答

4

我會說這是因爲你在拼寫錯誤的原始字符串中「拼寫錯誤」。

+0

剛剛通過拼寫測試更正了此代碼,並且它工作正常。 – cam8001 2010-06-13 16:18:19

+0

謝謝你的男人!閱讀障礙的編碼者的生活很艱難。 – 2010-06-13 16:19:09

+1

@Majid - 我推薦使用Netbeans或者其他一些IDE,這樣可以更容易地識別這樣的拼寫錯誤。另外,設置錯誤日誌記錄以包含E_NOTICE,並留意錯誤日誌(http://php.net/manual/en/errorfunc.configuration.php) – 2010-06-13 16:25:08