foreach(array(1=>2,2=>3) as $key=>$v)
{
//int
echo gettype($key).'<br>';
}
foreach(array('1'=>2,'2'=>3) as $key=>$v)
{
//int
echo gettype($key).'<br>';
}
foreach(array('a'=>2,'b'=>3) as $key=>$v)
{
//string
echo gettype($key).'<br>';
}

解决方案 »

  1.   

    假如一个数组有0这个下标,我想判断到底是默认生成的还是故意写的,怎么做?
    比如
    array("aaa", "bbb");array("0" => "aaa","1" => "bbb");
    怎么区别?  
      

  2.   

    array("0"   =>   "aaa","1"   =>   "bbb");
    怎么区别?    ------》没见过有这样定义数组的,只是输出的时候才这样。
      

  3.   

    为什么要区别,区别有什么实际意义么? 是这样的,我想定义一个类A用来解析数组为JSON字符串,这个数组是一个树型结构,由调用类A的人生成。1. 对于下标是0, 1, 2, 3...n,这种以int型做下标的数组(C语言兼容),我想对应生成json格式为[元素1, 元素2, ..., 元素n]
    2. 对于下标是字符串型的数组(哈希表),我想对应生成json格式为{下标1:元素1, 下标2:元素2, ..., 下标n:元素n}虽然可以用判断第一个元素下标是否为0来判断是1还是2, 但总觉得不是一个最完美的解决方案。还请高手支招!
      

  4.   

    array('1'=>1) === array(1=>1),是php的一个机制.