Bu PHP dizi erişimde bir hata mı?

3 Cevap php

Ben onun endeksi ise string bir dizi unsuru, "0", ulaşılmaz bu hata koştu.

Bu bunu yürütmesini olmadan benim kodunda oluştu gibi, ya unserialize ile bir hata değil.

$arr = unserialize('a:1:{s:1:"0";i:5;}');
var_dump($arr["0"]); //should be 5, but is NULL
var_dump($arr[0]);   //maybe this would work?  no. NULL

Burada yanlış bir şey yapıyorum? Nasıl dizinin bu eleman erişebilirim?

3 Cevap

Bu tamsayılar dizeleri PHPs otomatik dönüşüm ile ilgili, bir hata sanki Evet, görünüyor. Daha fazla bilgi burada mevcuttur: http://bugs.php.net/bug.php?id=43614

var_dump( $arr ); // => array(1) { ["0"]=>  int(5) } 
$arr2["0"]=5;
var_dump($arr2); // => array(1) { [0]=>  int(5) } 
print serialize($arr2); // a:1:{i:0;i:5;}

Bu yüzden PHP5 eski sürümleri unserialize dizin dönüştürme tamsayı dize endeksi gerçekleştirmek olmadığını görünüyor.

Bu hata PHP 5.2.5 bildirildi, ve (http://www.php.net/ChangeLog-5.php#5.2.6 bakınız) PHP 5.2.6 giderilmiştir.

bu temsil nasıl görmek için yapısına var_dump kullanın. belki bu yardımcı olacaktır. Ben Data'nın :: Dumper ile bu gibi sorunları vardı ben Perl aynı şeyi yapıyordu

Aslında soru getirilerindeki kod

int(5)