Garip bir dizi davranış - bir dizi çok boyutlu olup olmadığını PHP nasıl düzgün kontrol edebilirim

4 Cevap php

Ben bu dizi varsa:

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

echo $foo[0][1];

// result
a
// i.e the second letter of 'bar'

Ben olsaydı [0] [1] yani ayarlı olmadığını $ foo kontrol etmek istiyorum:

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

true değerlendirmek istiyorum, ama $ foo benim orijinal örnekte [0] = 'bar' ben bu beklenir:

isset($foo[0][1])

return false ediyorum;

Lütfen test etmek için doğru yolu nedir.

4 Cevap

PHP çok boyutlu diziler yoktur. Bu diziler, diziler. Bu farkı anlamak önemlidir.

Yapmanız gereken:

if (is_array($foo[0]) && isset($foo[0][1])) {
  ...
}

doh

bu ->

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

Ben hala PHP $ foo [0] [1] rağmen ayarlanır düşünüyor neden olarak kafam karıştı ...

if (is_array($foo[0]));

ve http://php.net/manual/en/language.types.string.php#language.types.string.substr "a" dönen referans için;

[0] [1], aslında string $ foo ilk karakterini erişen $ foo kullanarak [0].