2014-04-02 26 views
0

當我遇到一個特定情況時,我只是在處理樣本web-service,以輸出兩個給定值(字符串)中的任一個的結果。所以,我想,我可以使用true-false作爲這些字符串數組的索引嗎?爲了驗證,我測試了一樣,它工作。邏輯很清楚,我認爲真假作爲陣列的1點0的索引:在PHP中使用true和false作爲數組索引?

$arr = array(true=>"string1",false=>"string2"); 
$res = $arr[$test_val]; 

不過,我可以使用可以達到同樣的:

$res = $test_val? "String1":"String2"; 

所以,我想知道,正如我所假設的那樣,哪種方法更好?在任何一種方法中,相同數量的內存都被用完了?否,數組使用更多,對吧?

+0

當使用布爾作爲數組鍵,它們被轉換成整數,即關鍵的真實將被投到1和關鍵的假轉換成0 –

+0

我認爲你對一些不重要的東西感到痛苦。但我會選擇三元論,因爲它更清晰。如果你的應用需要這種優化水平,那麼我很驚訝 – edmondscommerce

+0

@Mark:是的,我知道。我明確指出了這個問題。 – Sayed

回答

2

具有良好的編碼風格傾向於使用清晰的結構,所以如果你的目的是做一個比較三元操作符(?:),因爲他們做比較是比較合適的位置:

$res = $test_val ? 'String1' : 'String2'; 

從內存/速度觀點:三元組可能也更快,因爲它不需要創建存儲器結構,儘管取決於應用程序的大小,但這種方法不可能產生明顯的效果。

注意:如果你真的關心優化,使用了雙引號如果可能的話,因爲這些沒有得到解析變量和特殊字符單引號:P

希望這有助於:) X

+0

假設我們需要將應用程序交付給客戶端,在那裏他將定製他的消息。所以,在這種情況下,不會使用數組(是的,仍然只有兩個值)是更好的方法嗎? – Sayed

+1

嗯...這取決於。如果你正在談論的是在代碼中的其他地方有一個配置數組,那麼你會參考那麼是的,這將是一個更好的方式:) –

+0

所以我認爲這將是一個'基於情境'的方法.. :) – Sayed

1

三元運算速度會更快 讓我們開始程序運行

$arr = array(true=>"string1",false=>"string2"); 
$res = $arr[$test_val]; 

什麼程序做: - 創建一個數組分配兩個指數和值,然後ARRA ÿ分配給$arr然後分配給$res

現在三元

$res = $test_val? "String1":"String2"; 

簡單$test_val將匹配字符串和分配給$res 所以簡單地將更快

+0

從可用性的角度來看,不會讓用戶在不同的ini文件中定義這兩個狀態消息(在這裏考慮一個最終客戶端)會更好嗎?因爲Coz客戶端不喜歡硬編碼字符串,對吧? – Sayed