2012-07-26 37 views
0

我有一個示例代碼:當在數組array()中檢查isset時,在php中使用unserialize()時出錯?

$text = 'a:3:{s:2:"id";s:18:"nokiainternal_ver1";s:10:"user_agent";s:13:"NokiaInternal";s:9:"fall_back";s:13:"nokia_generic";}'; 
$text = unserialize($text); 
if(isset($text['model_name'])) { 
    $text['model_name'] = 'Nokia'; 
} 
echo $text['model_name']; 
echo $text['user_agent']; 

,反而會導致錯誤Notice: Undefined index: model_name ...如何解決呢?

+0

究竟你打算做什麼?提供默認值? – Azder 2012-07-26 03:56:18

+0

你的反序列化數組是'Array([id] => nokiainternal_ver1 [user_agent] => NokiaInternal [fall_back] => nokia_generic)',沒有鍵作爲'model_name'。 – 2012-07-26 04:02:35

回答

2

下面的代碼:

if(isset($text['model_name'])) { 
    $text['model_name'] = 'Nokia'; 
} 

檢查是否model_name設置,如果是,將其設置爲「諾基亞」

這意味着你不設定關鍵model_name任何東西,這是造成你的Undefined index錯誤。

嘗試:

if(!isset($text['model_name'])) { 
    $text['model_name'] = 'Nokia'; 
} 
+0

@Micheal Robinson:結果是白頁 – 2012-07-26 03:58:17

+0

白頁意味着你有代碼錯誤 - 可能是語法錯誤。答案看起來很好 - 所以檢查你是否正確複製/粘貼? – Robbie 2012-07-26 04:10:16

+0

@HaiTruong把'ini_set('display_errors'); error_reporting(E_ALL);'在文件頂部。這將導致顯示錯誤消息。 – 2012-07-26 08:34:44