我通过某个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);
它不会切掉任何东西时,我认为那是因为它是一个数组中的数组,但我该怎么做呢?
谢谢!
答案 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_pop
,array_shift
,end
...也都会这样做。无论哪个为您提供阵列,您都希望拼接最快(最简单)
如果要拼接所有子数组:
$output = array();
foreach($response as $part => $arr)
{
$output[$part] = array_slice($arr, -200);
}
PS:如果您想要最后200个索引,则无需指定第三个参数