0

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

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

谢谢!

4

3 回答 3

0

你可以

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

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

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

$output = false;
if (!empty($response[0]))
    $output = array_slice($response[0], -200, 200);
于 2013-07-18T11:28:26.340 回答
0

“如果给定长度并且为负数,那么序列将从数组末尾停止那么多元素。如果省略它,那么序列将包含从偏移量到数组末尾的所有内容。” - php.net

所以你想做的很简单: $output = array_slice($response, -200);

于 2013-07-18T11:28:43.173 回答
0

很简单,对要切片的数组进行切片:

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

我假设R2420您知道密钥。如果不:

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

当然,您不必使用resetarray_pop, array_shift, end... 也可以。无论哪种方式都能最快(最简单)地获得想要拼接的阵列。
如果要拼接所有子数组:

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

PS:如果你想要最后200个索引,你不需要指定第三个参数

于 2013-07-18T11:28:54.437 回答