【问题标题】:Multidimensionnal ARRAY - 3 and 4 levels多维阵列 - 3 级和 4 级
【发布时间】:2015-11-16 11:20:19
【问题描述】:

我有这个 3 和 4 多维数组 ($response),我需要“提取”一些值。

Array ( 
[status] => 200 
[response] => Array ( 
    [api_id] => 38229dd9-8c52-11e5-80f6-22000afd0039 
    [meta] => Array ( 
        [limit] => 20 
        [next] => /v1/Account/xxx/Call/?limit=20&offset=20 
        [offset] => 0 
        [previous] => 
        [total_count] => 57 ) 
    [objects] => Array ( 
        [0] => Array ( 
            [answer_time] => 2015-11-13 18:36:19+01:00 
            [bill_duration] => 10 
            [billed_duration] => 60 
            [call_direction] => inbound 
            [call_duration] => 10 
            [call_uuid] => dcd94e59-8775-4c81-a4b1-cd5d41d630c6 
            [end_time] => 2015-11-13 18:36:29+01:00 
            [from_number] => 3300000000 
            [initiation_time] => 2015-11-13 18:36:18+01:00 
            [parent_call_uuid] => 
            [resource_uri] => /v1/Account/xxx/Call/dcd94e59-8775-4c81-a4b1-cd5d41d630c6/ 
            [to_number] => 3300000000 
            [total_amount] => 0.00500 
            [total_rate] => 0.00500 ) 
        [1] => Array ( 
            [answer_time] => 2015-11-13 15:52:01+01:00 [
            bill_duration] => 48 
            [billed_duration] => 60 
            [call_direction] => inbound 
            [call_duration] => 48 
            [call_uuid] => b2d3de5d-a047-4409-9f7a-825373c38f0a 
            [end_time] => 2015-11-13 15:52:48+01:00 
            [from_number] => 3300000000 
            [initiation_time] => 2015-11-13 15:52:00+01:00 
            [parent_call_uuid] => 
            [resource_uri] => /v1/Account/xxx/Call/b2d3de5d-a047-4409-9f7a-825373c38f0a/ 
            [to_number] => 3300000000 
            [total_amount] => 0.00500 
            [total_rate] => 0.00500 ) 
        ...

在 [meta] 数组中,我需要 [total_count] 值,对于 [object] 数组,我想获取所有值以连续显示它们(每个对象都是一个新行)。

我已经尝试在 foreach 中使用 foreach 或使用 $response[0][0][0] 访问数据,但没有任何效果。

如果有人能引导我找到解决方案...

非常感谢!!

【问题讨论】:

  • 这是foreach($response->objects as $key => $object) 然后你可以使用例如$object->answer_time

标签: php arrays loops multidimensional-array foreach


【解决方案1】:

您可以通过$response['response']['meta'] 访问元数组。从数组中可以看出,response 和 meta 都是键,total_count 也是。因此,访问总数由$response['response']['meta']['total_count'] 完成。

然后循环遍历所有对象,只需这样做

foreach ($response['response']['objects'] as $object) {
    print_r($object);
}

您还可以使用数组键单独访问对象的每个属性:

foreach ($response['response']['objects'] as $object) {
    echo $object['answer_time'];
    echo $object['bill_duration'];
    echo $object['billed_duration'];
    echo $object['call_direction'];
    echo $object['call_duration'];
    echo $object['call_uuid'];
    echo $object['end_time'];
    echo $object['from_number'];
    echo $object['initiation_time'];
    echo $object['parent_call_uuid'];
    echo $object['resource_uri'];
    echo $object['to_number'];
    echo $object['total_amount'];
    echo $object['total_rate'];
}

【讨论】:

  • 我怎样才能只获取 $object 的值?
  • 您可以通过数组键访问它,例如$object['billed_duration']。会更新我的答案。
【解决方案2】:

首先,验证$array 是否是您的数组的名称:

$response = $array["response"];

在 [meta] 数组中,我需要 [total_count] 值

echo $response["meta"]["total_count"];

对于 [object] 数组,我想获取所有值以连续显示它们(每个对象都是一个新行)。

对所有对象使用foreach() 函数:

foreach($response["objects"] as $object){
    print_r($object);
}

【讨论】:

  • 第一部分有效:echo $array["response"]["meta"]["total_count"];
【解决方案3】:

您可以使用带有“COUNT_RECURSIVE”标志的“count”函数。它计算“混合”变量中的所有项目。它也计算父元素。

count($array['objects'],COUNT_RECURSIVE);

例子

$cibo = array(
        'frutta' => array('arancia', 'banana', 'mela'),
        'verdura' => array('carota', 'zucchina', 'piselli')
);

echo count($cibo,COUNT_RECURSIVE); // output 8

【讨论】:

  • 是的,对不起,我太懒了! :)
猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 2013-02-26
  • 1970-01-01
  • 2018-07-15
相关资源
最近更新 更多