① Session数组中的键名可以是一个变量名吗例如:$email='[email protected]';
$_SESSION[$email]=$email;可是我试了好像不可以,有没有办法使 Session数组中的键名是一个变量名啊还有两个小问题,我想一起问:② PHP中没有日期型数据类型吗,是不是一般PHP程序中都把日期用字符串来保存呢。③ php字符串中不能含有算术表达式吗?例如:$n=6;
$ge="你是第". $n+1 ."个访问者";  
$ge="你是第 $n+1 个访问者";
都不能输出7.难道一定要单独将算术表达式赋值给一个变量,再将变量放到字符串中去吗。④  这个程序的结果为什么是0啊?1 || 0的执行结果不是1吗。
$str = "1 || 0;";
if(eval($str)){
    echo 1;
}else{
    echo 0;
}

解决方案 »

  1.   

    ① 可以,print_r($_SEEION); 就能看到
    ② 是的
    ③ 可以含有,只不过要改一下
        $ge="你是第". ($n+1) ."个访问者";  
        $ge="你是第 $n+1 个访问者";  // eval 一下
    ④ 仔细去阅读以下eval函数的介绍,引自手册:如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
      

  2.   

    ① Session数组中的键名可以是一个变量名吗
    当然可以,例如:$email='[email protected]';
    $_SESSION[$email]=$email;Array
    (
        [[email protected]] => [email protected]
    )
    只不过你不知道键名是什么,读取时有点麻烦② PHP中没有日期型数据类型吗,是不是一般PHP程序中都把日期用字符串来保存呢。
    是这样的③ php字符串中不能含有算术表达式吗?
    不是的,只不过你可能不会得到期望的结果。要学会使用括号
    例如:$n=6;
    $ge = "你是第". ($n+1) ."个访问者";  
    就可得到:你是第7个访问者④  这个程序的结果为什么是0啊?1 || 0的执行结果不是1吗。
    既然你需要使用函数的返回值,那么函数体就应该有显式的返回
    $str = "1 || 0;";
    if(eval("return $str")){
        echo 1;
    }else{
        echo 0;
    }
      

  3.   

    ① Session数组中的键名可以是一个变量名吗//这个是可以你的写法也是可以的,你说不行是不是因为你没在开始的地方写session_start()这个方法?
    ②php日期都是用时间戳的,然后用date()方法格式化就可以得到一个日期
    ③这个可以的,你只要优级改一下就行了,例如:$ge="你是第". ($n+1) ."个访问者";  
    ④var_dump( eval($str));你这个看一下就知道,因为它他一个null值,然后转成布尔型就是false,得到的结果就是0了