以下代碼輸出would
,我們期望它輸出12/5/10
。原因是array_search
僅適用於關聯數組,而explode
返回無鍵數組,因此$k
是false
和$k+1
是1
。將無鍵陣列轉爲關聯陣列
$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
驗證這一點。
有沒有辦法將一個無鍵數組轉換爲關聯數組?
剛試過第二個代碼塊,它也失敗了!我錯過了什麼? – 2010-06-13 16:17:23
你爲什麼這麼做?看來這個功能的目的是提取日期。如果是這樣,那麼使用正則表達式是有意義的。對於這些事情,preg_match比你的數組爆炸往返和array_search更快。 – mario 2010-06-13 17:23:03
@mario - 這些都是開始實施智能響應器的步驟。很多會改變,但現在爆炸+搜索會做。 – 2010-06-13 17:30:53