2013-07-18 34 views
0

我正在獲取某些數據通過某人elses腳本形成一個數組我想分片,因爲那裏有很多舊數據,我只需要最新的最新數據。php array_slice無法找到數組

林從XML創建一個這樣的數組:

$result = (object)$SOAP->Export($token, $exportCmd, $admin); 

    if($result->response->code != APIResponse::Success) 
     die("Failed to Export"); 

    $exportedXML = $result->exportResult; 

    $xml = trim(str_replace("Content-type: text/xml", " ", $exportedXML)); 

    $xml = simplexml_load_string($xml); 

    $json = json_encode($xml); 

    $response = json_decode($json,TRUE); 

如果我打印的迴應,我得到這樣的:

Array ( 
[R2420] => Array ( 
[0] => Array ([F2400] => 00200002 [F2425] => 01 [F2426] => 050) 
[1] => Array ([F2001] => text [F2400] => 00200002 [F2425] => 00 [F2426] => 060) 
[2] => Array ([F2001] => text [F2400] => 00200008 [F2425] => 01 [F2426] => 080) 
[3] => Array ([F2001] => text [F2400] => 00200008 [F2425] => 02 [F2426] => 080) 
[4] => Array ([F2001] => text [F2400] => 00200026 [F2425] => 00 [F2426] => 150) 
[5] => Array ([F2400] => 00200038 [F2425] => 01 [F2426] => 330) 
) 
) 

這一個去5,實際就是到2000左右。我只想要例如最後200.但是,當我使用$output = array_slice($response, -200, 200);它不會切片什麼,我認爲這是因爲它在數組中的數組,但我該如何切片?

謝謝!

+0

只是一個側面說明:'APIResponse ::成功「表明你正在使用類常量。約定是在UPPER-CASE中編寫常量名,類名和靜態屬性是Ucfirst –

回答

0

你可以只

$output = array_slice($response[0], -200, 200); 

如果你確信這是你想要的數組中的第一個元素。

只要確保將其包裝在$ response [0]存在的檢查中。

$output = false; 
if (!empty($response[0])) 
    $output = array_slice($response[0], -200, 200); 
0

「如果長度,並給出爲否定則該序列將停止從數組的末尾,許多元件。如果它被省略了,則該序列將具有從一切偏移,直到陣列的端「 - php.net

所以,你想要做的僅僅是: $output = array_slice($response, -200);

+0

這並不能解決問題:OP想要切片的數組在'$ response'數組中。 'array_slice($ foo,-200,200);'是完全有效的,雖然第三個參數是一個過度殺傷力 –

+0

是嗎?據我瞭解,OP希望切割外部陣列。 –

+0

只要看看OP的問題中的示例響應,以及實際的問題:_「不會切掉任何東西,我認爲這是因爲它是一個數組中的數組,但我該如何切片?」_ - >數組中的數組是他想要分割的東西 –

0

簡單,切你想切片的數組:

$output = array_slice($repsonse['R2420'],-200); 

我假設你知道鑰匙R2420。如果不是:

$output = array_slice(reset($response), -200); 

你不需要使用reset,當然:array_poparray_shiftend ......都會做了。無論你選擇哪種陣列,都可以拼接最快(也是最簡單)的陣列。
如果你想拼接所有子陣列:

$output = array(); 
foreach($response as $part => $arr) 
{ 
    $output[$part] = array_slice($arr, -200); 
} 

PS:如果你想在最後200個指數,你不需要指定第三個參數