2012-07-26 36 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