2016-09-16 128 views
0
array(1) { 
    ["value"] => array(1000) { 
    [0]=> array(9) { 
     ["PartitionKey"]=> string(11)"AWT-GPI.com" 
     ["RowKey"]=> string(36) "0024a6ac-6cf1-454a-91b2-15bfec3a3d86" 
     ["Timestamp"]=> string(28) "2016-09-09T20:16:26.8674483Z" 
     ["Email"]=> string(20) "[email protected]" 
     ["First_Name"]=> string(8) "Jennifer" 
     ["Hash"]=> string(32) "d656d0c21b8f3c14fe03232bb68d1b53" 
     ["IP_1"]=> string(0) "" 
     ["Last_Name"]=> string(5) "Young" 
     ["Username"]=> string(9) "flacobell" 
    } 
    [1]=> array(9) { 
     ["PartitionKey"]=> string(11) "AWT-GPI.com" 
     ["RowKey"]=> string(36) "002c00c4-e064-43e8-9dd8-319c8d6663bd" 
     ["Timestamp"]=> string(28) "2016-09-09T20:19:54.5500874Z" 
     ["Email"]=> string(22) "[email protected]" 
     ["First_Name"]=> string(1) "G" 
     ["Hash"]=> string(32) "1444a7b2c86506158013d1175137eede" 
     ["IP_1"]=> string(0) "" ["Last_Name"]=> string(6) "Wilson" 
     ["Username"]=> string(13) "misterspeed76" 
    } 
    } 
} 

這就是當我打電話給我的API時,現在這只是一個樣本。如果您看到[0]表示條目1,而[1]表示條目2。還有更多,但我縮短了它。現在,我可以做到這一點PHP JSON數組循環

foreach ($null_check['value'] as $key => $data) { 
     // Get rid of '_' in Website Names 
     $new = str_replace('_', ' ', $data['PartitionKey']); 
     echo 'Website: '.$new.'<br>'; 
     echo 'Email: '.$data['Email'].'<br>'; 
    } 

,讓我把所有的電子郵件和這樣

但我想要的東西是能夠把[0]和格式,這樣一個循環。它與i++有關,但我不太瞭解它。

這是我真正想要的:

PartitionKey: AWT-GPI.com 
Email: [email protected] 
First Name: Jennifer 
Last Name: Young 
Hash: d656d0c21b8f3c14fe03232bb68d1b53 

正如你可以看到我已經取出來的一些東西,並重新安排它。我想知道這是否可能通過使用foreach。但是,每個條目可能會有所不同,因此[1]可能沒有'email'或'first_name'

謝謝您的高級。

更新: 一些編碼後,我得到了,直到這裏

$count = count($null_check); 
    for ($i = 0; $data < $count; $i++) { 
     foreach ($null_check['value'][$i] as $key => $data) { 
      $parsed_key = str_replace('_', ' ', $key); 
      echo $parsed_key.': '.$data.'<br>'; 
     } 
     echo '<br><br>'; 
    } 

這使我只不過是迴應所有的細節,但我不知道哪些數據是如何組織的。

輸出:

PartitionKey: AWT-GPI.com 
RowKey: 0024a6ac-6cf1-454a-91b2-15bfec3a3d86 
Timestamp: 2016-09-09T20:16:26.8674483Z 
Email: [email protected] 
First Name: Jennifer 
Hash: d656d0c21b8f3c14fe03232bb68d1b53 
IP 1: 
Last Name: Young 
Username: flacobell 


PartitionKey: AWT-GPI.com 
RowKey: 002c00c4-e064-43e8-9dd8-319c8d6663bd 
Timestamp: 2016-09-09T20:19:54.5500874Z 
Email: [email protected] 
First Name: G 
Hash: 1444a7b2c86506158013d1175137eede 
IP 1: 
Last Name: Wilson 
Username: misterspeed76 
+0

「我已經拿出了一些東西並重新排列了它」所以你想要的結果是_exactly_你上面給出的或者你希望它包括你刪除的那些「東西」嗎? –

+0

所以我用[0]作爲例子,我想要的就是這個。重新設置它重新排列ParititonKey,RowKey和Timestamp。 –

+0

第一個'foreach'循環出了什麼問題? – Parfait

回答

0

看看這有助於:

foreach($jsonArray as $jsonObj) 
{ 
    foreach($jsonObj as $key => $value) 
    { 
     if ($key === "PartitionKey" || 
      $key === "Email" || 
      $key === "First_Name" || 
      $key === "Last_Name" || 
      $key === "Hash") { 
      echo $key . ": " . $value . "<br>"; 
     } 

    } 
} 

假設你有對象的JSON數組的json_decode($ JSON)。

+0

我提出了另一個問題,以取消設置我不需要的值[http://stackoverflow.com/questions/39542505/php-json-array-unset-not-工作/ 39542656#39542656)。我現在只需要知道如何重新排列它們。這也不會工作,因爲不是所有的條目都有散列或first_name所以... –

+0

我給你的循環檢查是否有散列。如果API輸出中沒有哈希字段,您將無法獲得!您正在嘗試在接收後格式化輸出,或者您嘗試更改API? –

0
foreach ($null_check['value'] as $key => $data) { 
     if(isset($data['PartitionKey'])){ 
      $parsed_website = str_replace('_', ' ', $data['PartitionKey']); 
      echo 'Website: '.$parsed_website.'<br>'; 
     } 
     if(isset($data['Username'])){ 
      echo 'Username: '.$data['Username'].'<br>'; 
     } 
     if(isset($data['Email'])){ 
      echo 'Email: '.$data['Email'].'<br>'; 
     } 
     if(isset($data['Hash'])){ 
      echo 'Hash: '.$data['Hash'].'<br>'; 
     } 
     if(isset($data['Salt'])){ 
      echo 'Salt: '.$data['Salt'].'<br>'; 
     } 
     if(isset($data['First_name'])){ 
      echo 'First Name: '.$data['First_Name'].'<br>'; 
     } 
     if(isset($data['Last_Name'])){ 
      echo 'Last Name: '.$data['Last_Name'].'<br>'; 
     } 
     if(isset($data['IP_1'])){ 
      $null_ip = array('0000-00-00', null); 
      if(!in_array($data['IP_1'], $null_ip)) { 
       echo 'Registered IP: '.$data['IP_1'].'<br>'; 
      } 
     } 
     echo '<br><br>'; 
    } 

我只是做了一個isset chcek如果有一個關鍵。這將通過所有的數組。感謝您的幫助,但這對我有效。