2011-03-06 18 views
7

json_decode() sonucu nasıl bir dizi alabilirim? Bir dizi sonucu elde etme json_decode

böyle bir dizi vardı:

$array = array(
    'mod_status' => 'yes', 
    'mod_newsnum' => 5 
); 

ve ben JSON kodlamasını gibi veritabanında bu kaydedilmiş:

{"mod_status":"yes","mod_newsnum":5} 

Şimdi veritabanından tekrar diziyi almak istiyorum. Ama kullandığınızda:

$decode = json_decode($dbresult); 

alıyorum: Yerine Bir dizinin

stdClass Object (
    [mod_status] => yes 
    [mod_newsnum] => 5 
) 

. Bir nesne yerine nasıl bir dizi alabilirim?

cevap

21

true json_decode ikinci parametre birleştirici diziler zorlamak için ayarlama: obje Döküm

$decode = json_decode($dbresult, true); 
+0

Gerçek cevap bu olmalı. – Stefan

7

olarak http://in3.php.net/json_decode başına:

$decode = json_decode($dbresult, TRUE); 
+1

+1 kısaltmasını kullanmak için “okuma ** Manuel ** ince”. ;) – Gumbo

+0

F, "F" sözcüğünü korkutmak içindir: P – Kumar

+0

[Güzel olunuz] (http://stackoverflow.com/faq#benice). –

0

sadece PHP'de bu verileri kullanırsanız yerine serialize ve unserialize kullanmanızı öneririz illâ, nesneler ve ilişkisel diziler arasında ayrım yapmak mümkün asla nesne sınıfının çünkü JSON'a kodlandığında bilgi kaybolur.

<?php 
class myClass{// this information will be lost when JSON encoding // 
    public function myMethod(){ 
     echo 'Hello there!'; 
    } 
} 
$x = array('a'=>1, 'b'=>2); 
$y = new myClass; 
$y->a = 1; 
$y->b = 2; 
echo json_encode($x), "\n", json_encode($y); // identical 
echo "\n", serialize($x), "\n", serialize($y); // not identical 
?> 

Run it.

+0

Cevap vermez: yorum yapmalıyım –

+1

@Mark Daha iyi olabilecek bir alternatif öneririm.Ve bu türden cevapların geçerli olduğunu düşünüyorum. En son düzenlemede –

2
$decode = json_decode($dbresult, true); 

ya

$decode = (array)json_decode($dbresult); 
0

Bir diziye json_decode ct sonucu beklenmedik sonuçlara sahip olabilir (ve baş ağrısına neden olabilir). Bu nedenle, (array)json_decode($json) yerine json_decode($json, true) kullanılması önerilir. Broken

:

<?php 

$json = '{"14":"29","15":"30"}'; 
$data = json_decode($json); 
$data = (array)$data; 

// Array ([14] => 29 [15] => 30) 
print_r($data); 

// Array ([0] => 14 [1] => 15) 
print_r(array_keys($data)); 

// all of these fail 
echo $data["14"]; 
echo $data[14]; 
echo $data['14']; 

// this also fails 
foreach(array_keys($data) as $key) { 
    echo $data[$key]; 
} 

Çalışma: İşte bir örnek

<?php 

$json = '{"14":"29","15":"30"}'; 
$data = json_decode($json, true); 

// Array ([14] => 29 [15] => 30) 
print_r($data); 

// Array ([0] => 14 [1] => 15) 
print_r(array_keys($data)); 

// all of these work 
echo $data["14"]; 
echo $data[14]; 
echo $data['14']; 

// this also works 
foreach(array_keys($data) as $key) { 
    echo $data[$key]; 
} 
İlgili konular