2016-03-30 16 views
0

Ya bir şey eksik ya da PHP 5.6.17'de bir hata buldum.Error_log() öğesini kesen, ancak print_r() öğesini bozmayan bir dizi var ve başka bir şekilde mükemmel çalışıyor

Verilerimi error_log() ile değiştirdiğimde (düzenleme: print_r ($ dizi, doğru) kullanarak), bir dizeyi geçiriyorum) veriyorum.

Array 
(
    [ 

Normalde görmeyi umduğum yer;

Array 
(
[person_id]=> 123456 
) 

ilk dizi anahtar çıkışı sona eriyor sanki ama ilk dizi anahtar Bunda tuhaf bir şey boş bir altdizilim olduğunu.

Garip bir şekilde, print_r() işlevini kullandığımda diziyi gayet iyi basar ve dizileri işleyen tüm dizi tabanlı PHP işlevlerini veya bunların üzerinde yinelemenin diziyle ilgili bir sorunu yoktur.

Anahtarlarımdan bazıları şöyle;

Array 
(
[per_roles] => Array 
    (
    ) 

[per_roles_retrieved] => 
[per_cache] => Array 
    (
    ) 

[*member] => 
[*addresses] => 
[*marketing_preferences] => 
[*suppliers] => 
[_table] => address 
[id] => 454545 
[*exists] => 1 
[*_related_objects] => Array 
    (
    ) 

[*_related_object] => Array 
    (
    ) 
[first_name] => John 
[middle_name] => 
[last_name] => Smith 

) 

Sorun nedir ve yıldız mı?

+0

Cevabı buldum. Sorun, dizinin bir dizi olarak atanmış bir nesneden gelmesidir. Bir dizi olarak yayınlandığında bu nesnenin korunan özellikleri, anahtarları "null karakterlerle" null karakterlerle doldurulur. Bu null karakterleri, hata dizisinin sonuna ulaştığını düşünmek için error_log'a (bir kez print_r ($ var, true)) neden oldu, böylece çıktı durdu. Düzeltmek için, bu boş karakterleri str_replace veya yerine print_r kullanmalısınız. –

cevap

0

http://php.net/manual/en/function.error-log.php adresindeki el kitabına göre error_log() işlevi, bir dizeyi argüman değil, bir dizge olarak alır. Error_log() öğesini çağırmadan önce diziyi diziye dönüştürmeyi deneyin.

+0

Bunu gördüm, ama neden bu kadar uzak olduğunu açıklamıyor. Tipik bir "fonksiyonun parametre 1'in bir dizi, verilen dizi" olmasını beklerdim. –

+0

Bu davranış için hiçbir açıklamam yok. Ancak, error_log() ile ilgili sorunu çözmek için json_encode() işlevini kullanabilirsiniz. –

+0

Üzgünüm, sorudan bir şey özledim, güncelledim. Diziyi hata günlüğüne iletmek için print_r ($ array, true) kullanıyorum, bu yüzden aslında bir dizeyi geçiriyorum. İşlediği bu dizeyle ilgili bir şey var. Aynı şeyi yaparsam ancak daha basit bir test dizisi (veya diziler içeren diziler ve diziler içeren başka çok boyutlu dizilerden geçersek, daha önce hiç başarısız olmadı. –

İlgili konular