2015-11-04 3 views
0

У меня есть JSON:PHP, как обнаружить, если JSON декодируются часть объекта или массива

{ 
    "catalogs": [ 
     { 
      "aa" : "aa", 
      "bb" : "bb" 
     }, 
     [ 
      { 
       "cc" : "cc", 
       "dd" : "dd" 
      }, 
      { 
       "ee" : "ee", 
       "ff" : "ff" 
      } 
     ] 
    ] 
} 

И PHP код:

<?php 

$catalogs = file_get_contents('test.json'); 
$catalogs = json_decode(preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $catalogs), true); 

$catalogs = $catalogs['catalogs']; 
foreach($catalogs as $catalog){ 
    echo gettype($catalog) . '<br/>'; 
} 

Выход:

array 
array 

Но мне нужно что-то вроде:

object 
array 
+1

Не пропустите 'true' в качестве второго аргумента' json_decode'? Вся цель этого параметра - вернуть ассоциативные массивы вместо объектов. Если вы этого не хотите, не передавайте 'true'. –

+0

ОК, он работает без, но я предпочитаю декодирование json как массив не как объект, но здесь мне нужно будет декодировать как объект. – fico7489

+0

Ну, иногда у вас не может быть всего: P –

ответ

0

декодирования JSON в качестве объекта работы:

<?php 

$catalogs = file_get_contents('test.json'); 
$catalogs = json_decode(preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $catalogs)); 

$catalogs = $catalogs->catalogs; 
foreach($catalogs as $catalog){ 
    echo gettype($catalog) . '<br/>'; 
} 

Выход:

object 
array 
Смежные вопросы