2015-06-29 16 views
14

Bir php betiğim var, bir json dosyasına file_get_contents() kullanarak erişiyoruz, bir json dosyası içinde, bir php değişkeni beyan ettik. Lütfen bir json dosyası içinde php değişkenini ayrıştırmanın herhangi bir yolu olduğunu bildirin. Aşağıda Varolan bir php dizesi değişmezini bir json dosyasında nasıl enterpolasyon yapabilirim?

kodudur:

{ "result":"$result", "count":3 } 

Ama I: json dosyası erişmek için test.json

{ 
    "result":"$result", 
    "count":3 
} 

php script

<?php 
$result = 'Hello'; 
$event = file_get_contents('test.json'); 
echo $event; 
?> 

Şimdi çıkış bilgileri aşağıdaki gibidir

012 gibi çıktıya ihtiyacınız var
{ "result":"Hello", "count":3 } 

Bir json dosyasında $result değişkenine erişemiyorum. Herhangi bir yardım Appreciated.Thanks

+0

'$ result' değişkenine erişerek ne demek istiyorsunuz ?! Lütfen ne istediğinizi bir örnek verin. – someOne

+0

Sadece bu soruyu buldum. Emin değil ama yardım alabilirsin http://stackoverflow.com/questions/4343596/parsing-json-file-with-php –

+4

Sorularınız gerçekten * "varolan bir dizgi değişmezini nasıl arayabilirim?" Bu gibi – Phil

cevap

13

Bunun için downvoted olsun olabilir, ama eval bu durumda kullanılabilir ki?

<?php 

$json = '{ 
    "result":"$result", 
    "count":3 
}'; //replace with file_get_contents("test.json"); 

$result = 'Hello world'; 



$test = eval('return "' . addslashes($json) . '";'); 
echo $test; 

Output

:

{ 
    "result":"Hello world", 
    "count":3 
} 
+0

Şu anda düşünebildiğim tek şey şu: – Phil

+2

@Phil Ya bu, ya da kendi ayrıştırma planınızı oluştur (bu, IMO'dan çok daha iyi olurdu). –

+2

PHP'nin '$' ile başlayan her şeyi enterpolasyona aldığını ve sonuçların artık geçerli bir JSON bile olmayabileceğini unutmayın. –

-3
<?php 
$json = file_get_contents("test.json"); 
$json_a=json_decode($json,true); 

foreach ($json_a as $key => $value){ 
    echo $key . ':' . $value; 
} 
?> 
1

yerine { "result":"$result", "count":3 }

gibi Senin yöntemini yapmanın böyle yapardı.

Bu

{ "result":"**result**", "count":3 }

için değişken için kısa bir kod belirtilen olurdu

ve ben JSON PHP, sadece benim istenen PHP değişken ile değiştirmek olduğunu girersiniz

$event = file_get_contents('test.json'); 

var $result = "hello"; 
$parsed_json = str_replace("**result**", $result,$event ); 
9

İlk önce yapıyı ayrıştırırken bunu karıştırmak zor değil;

$json=<<<'JSON' 
{ 
    "result":"$result", 
    "count":3 
} 
JSON; 

// parse data structure (array) 
$data = json_decode($json, true); 

// define replacement context 
$context = ['$result' => 'Hello']; 
// iterate over each element 
array_walk($data, function(&$value) use ($context) { 
    // match value against context 
    if (array_key_exists($value, $context)) { 
     // replace value with context 
     $value = $context[$value]; 
    } 
}); 

echo json_encode($data); // {"result":"Hello","count":3} 

bariz avantajı böylece dizeleri kaçan konusunda endişelenmenize gerek kalmamasıdır: Bu $ ile başlayan bir şey eşleşirse sonra dizideki her öğe üzerinde yineleme ve değerini değiştirmek için array_walk() kullanabilirsiniz JSON biçimi ihlal edilmez.

Veri yapısı yinelemeli ise, bunun yerine array_walk_recursive() kullanabilirsiniz.

İlgili konular