代码之家  ›  专栏  ›  技术社区  ›  niggles

php如何正确检查数组是否是多维的-奇怪的数组行为

  •  1
  • niggles  · 技术社区  · 15 年前

    如果我有这个数组:

    $foo[0] = 'bar';
    $foo[1] = 'bar bar';
    
    echo $foo[0][1];
    
    // result
    a
    // i.e the second letter of 'bar'
    

    我要检查$foo[0][1]是否未设置,即是否设置了:

    $foo[0][1] = 'bar';
    

    它的值为真,但在我最初的$foo[0]=‘bar’示例中,我希望:

    isset($foo[0][1])
    

    将返回false;

    请用什么方法来测试这个问题。

    4 回复  |  直到 15 年前
        1
  •  7
  •   cletus    15 年前

    PHP没有多维数组。它有数组。理解两者的区别是很重要的。

    你需要这样做:

    if (is_array($foo[0]) && isset($foo[0][1])) {
      ...
    }
    
        2
  •  0
  •   niggles    15 年前

    多哈

    它是-gt;

    array_key_exists($foo[0][1]);
    

    不过,我还是不明白为什么PHP认为设置了$foo[0][1]…

        3
  •  0
  •   Your Common Sense    15 年前
    if (is_array($foo[0]));
    

    http://php.net/manual/en/language.types.string.php#language.types.string.substr 关于返回“A”的参考;

        4
  •  0
  •   Hamid Sarfraz    12 年前

    通过使用$foo[0][1],您实际上正在访问字符串$foo[0]的第一个字符。