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

nig*_*les 1 php multidimensional-array

如果我有这个数组:

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

echo $foo[0][1];

// result
a
// i.e the second letter of 'bar'
Run Code Online (Sandbox Code Playgroud)

我想检查$ foo [0] [1]是否未设置,即如果我有:

$foo[0][1] = 'bar';
Run Code Online (Sandbox Code Playgroud)

它会评估为真,但在我原来的$ foo [0] ='bar'的例子中,我希望:

isset($foo[0][1])
Run Code Online (Sandbox Code Playgroud)

会返回虚假;

请问正确的测试方法是什么?

cle*_*tus 7

PHP没有多维数组.它有数组数组.理解差异很重要.

你需要这样做:

if (is_array($foo[0]) && isset($foo[0][1])) {
  ...
}
Run Code Online (Sandbox Code Playgroud)