gettype($request['p']) 得到类型为integer
var_dump($request['p']) 得到类型为nostring(1) "8" 
但$request['p']==8却不成立,不知道为什么
$request['p']==“8”同样也不成立
不知道他到底等于什么

解决方案 »

  1.   

    返回nostring的确挺奇怪的,呵呵.
    没见过这种情况,
    这主要还得从你的源头抓起.
      

  2.   

    nostring是什么类型?直接echo $request['p']是什么状况?
      

  3.   

    那你赋给$request['p']的值到底是什么啊?
    或者试试 (string)$request['p']=='8'
      

  4.   

    首先var_dump出nostring就很奇怪,特意看了看5.2的C源码,没有输出nostring的判定。其它版本的php对这个函数也没做什么修改吧?PHPAPI void php_var_dump(zval **struc, int level TSRMLS_DC)
    {
    HashTable *myht = NULL;
    char *class_name;
    zend_uint class_name_len;
    int (*php_element_dump_func)(zval**, int, va_list, zend_hash_key*); if (level > 1) {
    php_printf("%*c", level - 1, ' ');
    } switch (Z_TYPE_PP(struc)) {
    case IS_BOOL:
    php_printf("%sbool(%s)\n", COMMON, Z_LVAL_PP(struc)?"true":"false");
    break;
    case IS_NULL:
    php_printf("%sNULL\n", COMMON);
    break;
    case IS_LONG:
    php_printf("%sint(%ld)\n", COMMON, Z_LVAL_PP(struc));
    break;
    case IS_DOUBLE:
    php_printf("%sfloat(%.*G)\n", COMMON, (int) EG(precision), Z_DVAL_PP(struc));
    break;
    case IS_STRING:
    php_printf("%sstring(%d) \"", COMMON, Z_STRLEN_PP(struc));
    PHPWRITE(Z_STRVAL_PP(struc), Z_STRLEN_PP(struc));
    PUTS("\"\n");
    break;
    case IS_ARRAY:
    myht = Z_ARRVAL_PP(struc);
    if (myht->nApplyCount > 1) {
    PUTS("*RECURSION*\n");
    return;
    }
    php_printf("%sarray(%d) {\n", COMMON, zend_hash_num_elements(myht));
    php_element_dump_func = php_array_element_dump;//这个函数输出也不会有nostring
    goto head_done;
    case IS_OBJECT:
    myht = Z_OBJPROP_PP(struc);
    if (myht && myht->nApplyCount > 1) {
    PUTS("*RECURSION*\n");
    return;
    } Z_OBJ_HANDLER(**struc, get_class_name)(*struc, &class_name, &class_name_len, 0 TSRMLS_CC);
    php_printf("%sobject(%s)#%d (%d) {\n", COMMON, class_name, Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0);
    efree(class_name);
    php_element_dump_func = php_object_property_dump;//这个函数输出也不会有nostring
    head_done:
    if (myht) {
    zend_hash_apply_with_arguments(myht, (apply_func_args_t) php_element_dump_func, 1, level);
    }
    if (level > 1) {
    php_printf("%*c", level-1, ' ');
    }
    PUTS("}\n");
    break;
    case IS_RESOURCE: {
    char *type_name; type_name = zend_rsrc_list_get_rsrc_type(Z_LVAL_PP(struc) TSRMLS_CC);
    php_printf("%sresource(%ld) of type (%s)\n", COMMON, Z_LVAL_PP(struc), type_name ? type_name : "Unknown");
    break;
    }
    default:
    php_printf("%sUNKNOWN:0\n", COMMON);
    break;
    }
    }