$arr = array('1','2','3');
$str = serialize($arr);
$str1 = unserialize($str);
if( $str1 !== false){
print_r($str1);//输出数组
}else{
echo 'not unserialize';
}$arr = array('1','2','3');
$str = serialize($arr);
if( $str1 = unserialize($str) !== false){
print_r($str1);//输出1 为什么 
}else{
echo 'not unserialize';
}

解决方案 »

  1.   

    if( $str1 = unserialize($str) !== false)
    unserialize($str) !== false这个 判断返回的是1 当然是$str1 就是1了
      跟你 array的 1 2 3 没有一丁点关系
      

  2.   

    算术优先级问题:加上()试试:if( ($str1 = unserialize($str) !== false){
    print_r($str1);//输出1 为什么 
    }
      

  3.   

    if( $str1 = unserialize($str) !== false)
    改成
    if( ($str1 = unserialize($str)) !== false)
    应该就是你要的了
      

  4.   

    我看楼主的意思大慨是想先判断是否已经序列化过了吧.
    这么判断,PHP没有现成的函数if (@unserialize($str)){
    echo 'Is Serialize';
    }else{
    echo 'No Serialize';}