2016-07-14 239 views
0

我一直在寻找,但无法找到一个方法来解决这个问题。我有以下的JSON:循环通过嵌套JSON在PHP

{ 
    "success": true, 
    "outputScenario": "Informacion Inmuebles", 
    "data": { 
    "inmueble": [ 
     { 
     "titulo": [ 
      "Venta casa Villa liliana sur de Armenia" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 160 m2 , 4 alcobas y 2 baños " 
     ], 
     "precio": [ 
      "$140.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b49742320160714114235.jpg" 
     ], 
     "referencia": [ 
      199414 
     ] 
     }, 
     { 
     "titulo": [ 
      "Casa 5 alcobas area 110m2 sector Colegio CASD" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 110 m2 , 5 alcobas y 3 baños " 
     ], 
     "precio": [ 
      "$140.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b42241220160714111955.jpeg" 
     ], 
     "referencia": [ 
      199395 
     ] 
     }, 
     { 
     "titulo": [ 
      "CASA EN ARCADEZ" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío , 3 alcobas y 1 baños " 
     ], 
     "precio": [ 
      "$85.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b2160620160714095012.jpg" 
     ], 
     "referencia": [ 
      199341 
     ] 
     }, 
     { 
     "titulo": [ 
      "CASA EN BOSQUES DE PINARES" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 60 m2 , 2 alcobas y 1 baños " 
     ], 
     "precio": [ 
      "$70.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b2160120160714094050.jpg" 
     ], 
     "referencia": [ 
      199328 
     ] 
     }, 
     { 
     "titulo": [ 
      "CASA EN LA BRASILIA NUEVA" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 58,35 m2 , 3 alcobas y 1 baños " 
     ], 
     "precio": [ 
      "$75.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b2160820160714091008.jpg" 
     ], 
     "referencia": [ 
      199313 
     ] 
     }, 
     { 
     "titulo": [ 
      "CASA CONJUNTO CERRADO AL NORTE" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 150 m2 , 4 alcobas y 2 baños " 
     ], 
     "precio": [ 
      "$350.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b2160920160714083544.jpg" 
     ], 
     "referencia": [ 
      199302 
     ] 
     }, 
     { 
     "titulo": [ 
      "VENTA DE CASA EN MERCEDES DEL NORTE DE ARMENIA" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 72 m2 , 2 alcobas y 1 baños " 
     ], 
     "precio": [ 
      "$100.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b4651320160713070958.jpg" 
     ], 
     "referencia": [ 
      199254 
     ] 
     }, 
     { 
     "titulo": [ 
      "CASA SECTOR LA GRESIA, TRIFAMILIAR 125M2, HERMOSA." 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 125 m2 , 5 alcobas y 4 baños " 
     ], 
     "precio": [ 
      "$150.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b4119120160713023016.jpg" 
     ], 
     "referencia": [ 
      199070 
     ] 
     }, 
     { 
     "titulo": [ 
      "Venta casa Villa Liliana sur de Armenia" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 71 m2 , 3 alcobas y 3 baños " 
     ], 
     "precio": [ 
      "$120.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b4974620160713120208.jpg" 
     ], 
     "referencia": [ 
      198965 
     ] 
     }, 
     { 
     "titulo": [ 
      "VENTA DE CASA AL SUR DE ARMENIA" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 79 m2 , 4 alcobas y 2 baños " 
     ], 
     "precio": [ 
      "$95.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b875720160713111033.jpg" 
     ], 
     "referencia": [ 
      198929 
     ] 
     }, 
     { 
     "titulo": [ 
      "VENTA DE CASA EN EL NORTE DE ARMENIA" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 154 m2 , 4 alcobas y 3 baños " 
     ], 
     "precio": [ 
      "$310.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b46512920160712093023.jpg" 
     ], 
     "referencia": [ 
      198751 
     ] 
     }, 
     { 
     "titulo": [ 
      "VENTA CASA ARMENIA" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 110 m2 , 3 alcobas y 2 baños " 
     ], 
     "precio": [ 
      "$185.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b831820160712054648.jpg" 
     ], 
     "referencia": [ 
      198686 
     ] 
     }, 
     { 
     "titulo": [ 
      "VENTA DE CASA EN BOGOTA" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 191 m2 , 5 alcobas y 3 baños " 
     ], 
     "precio": [ 
      "$280.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b8751020160712032609.jpg" 
     ], 
     "referencia": [ 
      198628 
     ] 
     }, 
     { 
     "titulo": [ 
      "CASA SEMI CAMPESTRE EN ARMENIA ZONA NORTE" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 125 m2 , 3 alcobas y 3 baños " 
     ], 
     "precio": [ 
      "$260.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b41192620160712040422.jpg" 
     ], 
     "referencia": [ 
      198594 
     ] 
     }, 
     { 
     "titulo": [ 
      "Barrio El Recreo " 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío , 4 alcobas y 3 baños " 
     ], 
     "precio": [ 
      "$190.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b2470420160712033152.jpg" 
     ], 
     "referencia": [ 
      198587 
     ] 
     }, 
     { 
     "titulo": [ 
      "VENTA CASA EN EL NORTE DE ARMENIA" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío , 3 alcobas y 3 baños " 
     ], 
     "precio": [ 
      "$320.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/loscompradores/images/noimagelc.png" 
     ], 
     "referencia": [ 
      198578 
     ] 
     }, 
     { 
     "titulo": [ 
      "Venta Casas Rio Claro en Armenia, Quindio" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 63,79 m2 " 
     ], 
     "precio": [ 
      "Consultar" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b80251620160712031258.png" 
     ], 
     "referencia": [ 
      198577 
     ] 
     }, 
     { 
     "titulo": [ 
      "Casa en venta sector Norte Nueva Cecilia" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 189 m2 , 3 alcobas y 3 baños " 
     ], 
     "precio": [ 
      "$350.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b63892220160712025826.jpg" 
     ], 
     "referencia": [ 
      198574 
     ] 
     }, 
     { 
     "titulo": [ 
      "Casa en condominio" 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 245 m2 , 3 alcobas y 3 baños " 
     ], 
     "precio": [ 
      "$520.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b658320160712024747.jpg" 
     ], 
     "referencia": [ 
      198569 
     ] 
     }, 
     { 
     "titulo": [ 
      "Barrio Versalles Calarca " 
     ], 
     "descripcion": [ 
      "Casa para vender en Armenia, Quindío, con área de 224 m2 , 6 alcobas y 1 baños " 
     ], 
     "precio": [ 
      "$250.000.000" 
     ], 
     "moneda": [ 
      "Pesos Colombianos" 
     ], 
     "imagen": [ 
      "https://images.wasi.co/inmuebles/b2470620160712122415.jpg" 
     ], 
     "referencia": [ 
      198491 
     ] 
     } 
    ] 
    }, 
    "stateToken": "eyJqYXIiOnsidmVyc2lvbiI6InRvdWdoLWNvb2tpZUAyLjIuMiIsInN0b3JlVHlwZSI6Ik1lbW9yeUNvb2tpZVN0b3JlIiwicmVqZWN0UHVibGljU3VmZml4ZXMiOnRydWUsImNvb2tpZXMiOlt7ImtleSI6IlBIUFNFU1NJRCIsInZhbHVlIjoiY2xkdm82aDFzc2pycjFyNnAyZmxwYzNpMjMiLCJleHBpcmVzIjoiMjAxNi0wNy0yMVQxODoyODo0NC4wMDBaIiwibWF4QWdlIjo2MDQ4MDAsImRvbWFpbiI6Ind3dy5sb3Njb21wcmFkb3Jlcy5jb20iLCJwYXRoIjoiLyIsImhvc3RPbmx5Ijp0cnVlLCJjcmVhdGlvbiI6IjIwMTYtMDctMTRUMTg6Mjg6NDQuMzQxWiIsImxhc3RBY2Nlc3NlZCI6IjIwMTYtMDctMTRUMTg6Mjg6NDQuMzQxWiJ9XX0sInZlcnNpb24iOjF9" 
} 

我对循环数据的PHP代码如下:

<?php 
$C = urlencode($_GET['ciudad']); 
$T = $_GET['tipo']; 
$N = $_GET['negocio']; 

$search = "http://url.com/buscar/0.0.3?&q=&qc=&ciudad=".$C."&tipo_inmueble=".$T."&tipo_negocio=".$N."&alcobas=0&banios=0&precio=0"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_URL, $search); 
$result=curl_exec($ch); 
$search_results = json_decode($result,true); 
?> 

<?php 
foreach(array_slice($search_results['data']['inmueble'],0,5) as $result): 
    $titulo = $result["titulo"]; 
    $descripcion = $result["descripcion"]; 
    $precio = $result["precio"]; 
    $moneda = $result["moneda"]; 
    $imagen = $result["imagen"]; 
    $referencia = $result["referencia"]; 
?> 

<?php $var = $titulo; if (empty($var)) { echo ''; } if (isset($var)) { echo $titulo; }?> 

<?php endforeach; ?> 

但是,这并不工作,我不知道这个问题是关于JSON的支架,因为我使用相同的代码来循环不同的JSON源并且它可以工作。

它与array_slice给出该错误是:

警告:array_slice()预计参数1是阵列,在 /buscar.php空给出在第20行警告:提供参数无效 第20行的/buscar.php中的foreach()会给出此错误。

卸下array_slice误差为:

警告:

:用于/buscar.php的foreach()供给上 线20

而且var_dump($search_results);节目参数无效

NULL

回答

2

json_decode()的返回null,这是因为它是无效的JSON

检查它反对

http://jsonlint.com/

您的回答是数组,

变化

$titulo = $result["titulo"]; 

$titulo = $result["titulo"][0]; 

其他然后,它的作品在我的系统

<?php 
$result=file_get_contents('json.txt'); 
$search_results = json_decode($result,true); 
?> 

<?php 
foreach(array_slice($search_results['data']['inmueble'],0,5) as $result): 
    $titulo = $result["titulo"][0]; 
    $descripcion = $result["descripcion"][0]; 
    $precio = $result["precio"][0]; 
    $moneda = $result["moneda"][0]; 
    $imagen = $result["imagen"][0]; 
    $referencia = $result["referencia"][0]; 
?> 
<?php $var = $titulo; if (empty($var)) { echo ''; } if (isset($var)) { echo $titulo; }?> 

    <?php endforeach; ?> 

上给了我

php -f testing.php 

Venta casa Villa liliana sur de Armenia 
Casa 5 alcobas area 110m2 sector Colegio CASD 
CASA EN ARCADEZ 
CASA EN BOSQUES DE PINARES 
CASA EN LA BRASILIA NUEVA 
+1

得到它的工作与你的反应。非常感谢你。还要感谢“FirstOne” –