php array_slice无法找到数组

时间:2013-07-18 11:24:10

标签: php slice

我通过某个elses脚本获取了一些数据,这些脚本形成了我想要切片的数组,因为那里有很多旧数据,我只需要最新的最新数据。

我从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);它不会切掉任何东西时,我认为那是因为它是一个数组中的数组,但我该怎么做呢?

谢谢!

3 个答案:

答案 0 :(得分:0)

你可以

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

如果你确定它是你想要的数组中的第一个元素。

确保将其包装在$ response [0]存在的检查中。

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

答案 1 :(得分:0)

“如果给出长度并且为负,则序列将停止数组末尾的许多元素。如果省略,则序列将具有从偏移到数组末尾的所有内容。” - php达网络

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

答案 2 :(得分: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个索引,则无需指定第三个参数