Bir php dizi olarak biçimlendirilmiş bir kıvırmak yanıt itibaren kullanılabilir dizi alın

2 Cevap php
$ch = curl_init("url");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "test"); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$outputArray = curl_exec($ch);

Sonra $ outputArray içerecektir:

Array
(
[0] => Array
    (
        [r1] => test response
        [r2] => 4
        [r3] => 32
    )

)

Ben böyle bir şey yaptığınızda Yani PHP bir dizi olduğunu görmek ve bu şekilde tedavi edebilir düşünüyorum, ama olur

echo $outputCode[0][r_title]."\n";

bir hata veriyor:

PHP Fatal error:  Cannot use string offset as an array in /www/test.php on line 75 

(Line 75 yukarıdaki yankı biri olma)

Ben yanlış ne yapıyorum?

2 Cevap

Eğer alıyorsanız veriler, muhtemelen bir dizi değil, ama bir dizi yapısını içeren bir dize, örneğin tarafından çıkış print_r(). Bu veri tür not otomatik olarak bir PHP diziye geri dönüştürülür.

Eğer bu sorguladığınız sayfasını kontrol edebilirsiniz, {(kullanarak size kıvrılma elde verilerin kodunu, serialize() veya json_encode() gibi ve sorgulama tarafında bir yöntemi kullanarak verileri kodlamak [(2)]} veya json_decode()), sırasıyla. Bu işlevler, size uygun bir PHP dizi verecektir.

Gerekirse bu konuda ayrıntılı olabilir, ama bu gerçekten çok kötü - Eğer URL verilerini çıktılar biçimini değiştirmek için bir yol varsa, ben görebiliyorum tek yolu kullanarak (yuck!) eval() olduğunu fikir.

Sizin $outputArray in çıktıya gibi bir şey içeren görünüyor ki, a string olup print_r().

Orada PHP guess bu dize bir dizi temsil hiçbir yoludur - ve bir diziyi bildirmek için kullanılan sözdizimi gerçekten yakın değil; yani bu iş olmaz.


A solution would be :

  • to modify the remote script you're calling, so it returns a string containing some serialized data
    • yani ve dizi ile seri serialize
    • ya da json_encode
  • And, on your side, unserialize the data, to get the array back,
    • ya da unserialize ile
    • ya da json_decode