2014-03-30 43 views
0

這裏有一個json字符串,並且需要獲取所有父數組的位置registratition_id 例如,我想在結束了陣列把這樣的事情:PHP獲取數組父親的位置

[0] =>0 
[1] =>1 
[2] =>3 

其實我想所有包含registration_id

$json_raw = '{"multicast_id":6446899316497614986, 
        "success":5, 
        "failure":1, 
        "canonical_ids":3, 
        "results":[ 
          {"registration_id":"APA91bEgLFvrc0lnXqX3C1euQohdHrv_wbxtGP86ezRzGWEVMQPpJjw1GMhGzfkI8Q34TU1KRts2j_-7CyU4ce6MlX5DB3umpXDGl-Ebmg53b44UKga79ee9Sal6gT_9rP3KIz9pDEUk2JVJsQmxiWXWoIfrYEAmFg", 
           "message_id":"0:1396175384218906%50b5570df9fd7ecd" 
          }, 
          {"registration_id":"APA91bEgLFvrc0lnXqX3C1euQohdHrv_wbxtGP86ezRzGWEVMQPpJjw1GMhGzfkI8Q34TU1KRts2j_-7CyU4ce6MlX5DB3umpXDGl-Ebmg53b44UKga79ee9Sal6gT_9rP3KIz9pDEUk2JVJsQmxiWXWoIfrYEAmFg", 
           "message_id":"0:1396175384218155%50b5570df9fd7ecd" 
          }, 
          {"message_id":"0:1396175384218718%b91f4d1ff9fd7ecd" 
          }, 
          {"registration_id":"APA91bEgLFvrc0lnXqX3C1euQohdHrv_wbxtGP86ezRzGWEVMQPpJjw1GMhGzfkI8Q34TU1KRts2j_-7CyU4ce6MlX5DB3umpXDGl-Ebmg53b44UKga79ee9Sal6gT_9rP3KIz9pDEUk2JVJsQmxiWXWoIfrYEAmFg", 
           "message_id":"0:1396175384219100%50b5570df9fd7ecd" 
          }, 
          {"message_id":"0:1396175384219927%50b5570df9fd7ecd" 
          }, 
          {"error":"InvalidRegistration" 
          }] 
         }'; 

回答

1

使用foreach循環,並檢查是否registration_id isset陣列位置

$obj = json_decode($json_raw); 
$resultsWithRegID = array(); 

foreach($obj->results as $index=>$element){ 
    if(isset($element->registration_id)){ 
    $resultsWithRegID[] = $index; 
    } 
} 
+0

+1感謝的人,你救了我的天! –

0

轉換JSON到數組 - 剩下的是你:

$array = json_decode($json_raw, true); 

// results with registration_id 
$results = array(); 
foreach($array['results'] as $index => $element) { 
    if(isset($element['registration_id']) === true) { 
    $results[] = $index; 
    } 
} 

var_dump($results); 
0
<html> 
<head> 
<title>Online PHP Script Execution</title> 
</head> 
<body> 
<?php 
    $json_raw = '{"multicast_id":6446899316497614986, 
        "success":5, 
        "failure":1, 
        "canonical_ids":3, 
        "results":[ 
          {"registration_id":"APA91bEgLFvrc0lnXqX3C1euQohdHrv_wbxtGP86ezRzGWEVMQPpJjw1GMhGzfkI8Q34TU1KRts2j_-7CyU4ce6MlX5DB3umpXDGl-Ebmg53b44UKga79ee9Sal6gT_9rP3KIz9pDEUk2JVJsQmxiWXWoIfrYEAmFg", 
           "message_id":"0:1396175384218906%50b5570df9fd7ecd" 
          }, 
          {"registration_id":"APA91bEgLFvrc0lnXqX3C1euQohdHrv_wbxtGP86ezRzGWEVMQPpJjw1GMhGzfkI8Q34TU1KRts2j_-7CyU4ce6MlX5DB3umpXDGl-Ebmg53b44UKga79ee9Sal6gT_9rP3KIz9pDEUk2JVJsQmxiWXWoIfrYEAmFg", 
           "message_id":"0:1396175384218155%50b5570df9fd7ecd" 
          }, 
          {"message_id":"0:1396175384218718%b91f4d1ff9fd7ecd" 
          }, 
          {"registration_id":"APA91bEgLFvrc0lnXqX3C1euQohdHrv_wbxtGP86ezRzGWEVMQPpJjw1GMhGzfkI8Q34TU1KRts2j_-7CyU4ce6MlX5DB3umpXDGl-Ebmg53b44UKga79ee9Sal6gT_9rP3KIz9pDEUk2JVJsQmxiWXWoIfrYEAmFg", 
           "message_id":"0:1396175384219100%50b5570df9fd7ecd" 
          }, 
          {"message_id":"0:1396175384219927%50b5570df9fd7ecd" 
          }, 
          {"error":"InvalidRegistration" 
          }] 
         }'; 
$data=json_decode ($json_raw); 
$arr= $data->{'results'}; 
$i=0; 
$n_r=array(); 
foreach($arr as $d) 
{$n_r[]=$arr[$i]->{'registration_id'}; 
$i=$i+1;} 
print_r($n_r); 
?> 
</body> 
</html> 
1

只是一個替代版本:

$array_raw = json_decode($json_raw, true); 

$what = "registration_id"; 

$res = array_keys(array_filter($array_raw['results'], function($item) use ($what) 
{ 
    return isset($item[$what]); 
})); 

var_dump($res); 

很明顯,你可以:

  • 定義的關鍵isset($item["registration_id"])
  • 內直搜索省略包裝功能部件array_keys,如果您需要陣列的整個部分已過濾

整體的一部分

array (size=3) 
    0 => 
     array (size=2) 
      'registration_id' => 'APA91bEgLFvrc0lnXqX3C1euQohdHrv...' 
      'message_id' => '' 
    1 => 
     array (size=2) 
      'registration_id' => 'APA91bEgLFvrc0lnXqX3C1euQohdHrv...' 
      'message_id' => '0:1396175384218155%50b5570df9fd7ecd' 
    3 => 
     array (size=2) 
      'registration_id' => 'APA91bEgLFvrc0lnXqX3C1euQohdHrv...' 
      'message_id' => '0:1396175384219100%50b5570df9fd7ecd'