PHP-获取关联数组和索引数组中的多维数组

时间:2018-09-16 15:12:15

标签: php arrays json

我有一个多维数组,该数组由关联数组中的索引数组组成。

如何获取托管索引数组的indexed arraysassociative arrays的单独计数。

在我的情况下,使用sizeof($jArray, 1)得出197,这是键值对+索引数组+关联数组(49 * 3 + 49 + 1)的总数。

Count($jArray)的结果是1,我猜这是关联数组。

JSON结构:

Name
│
│───[0] 
│    └── Key -> Value
│    └── Key -> Value
│    └── Key -> Value
└───[1] 
│    └── Key -> Value
│    └── Key -> Value
│    └── Key -> Value
│...
│
└───[n]
     └── Key -> Value
     └── Key -> Value
     └── Key -> Value

我在这里寻找的数量是

49 - (indexed arrays within associative array 'Name')
147 - (total key-value pairs within indexed array)
3 - (key-value pairs within an indexed array)

2 个答案:

答案 0 :(得分:0)

您始终可以使用count()来执行此操作,例如,如果您具有以下数组:

 $arrs = [
'name1' => [
    [
        'key1'=>1,
        'key2'=>2,
    ],
    [
        'key3'=>3,
    ],
    [
        'key4'=>4,
        'key5'=>5,
        'key6'=>6,
    ],
],
'name2' => [
    [
        'key7'=>7,
    ],
],

];

$ arrs是3阶的多维数组,要获取级别0中name1和name2(关联数组)的元素数量,可以使用:count($arrs);,这将返回2。 如果您想要name1的元素数量:count($arrs[name1]),则将返回3。 如果您想要name1和name2中的元素总数,

$total=0; foreach($arrs as $arr) $total+=count($arr); 如果您想要键值对的总数:

foreach($arrs as $arr){

foreach($arr as $ar) $total+=count($ar); }

答案 1 :(得分:0)

以下代码行可复制多维数组以用于测试目的:

 $arrs=array_fill_keys(['name'],array_fill(0,49,['key1'=>1,'key2'=>2,'key3'=>2,]));

据此:

  

49-(关联数组“名称”中的索引数组)

     

147-(索引数组中的键值对总数)

     

3-(索引数组中的键/值对)

特别是第三行,所有计数都简化为可以通过这种方式实现的一些简单操作:

$InArWiAsArNa=count($arrs['name']);
$KV_wi_IA=count(current($arrs['name']));
$total_KV_pairs_wi_IA=$InArWiAsArNa*$KV_wi_IA;

var_dump($InArWiAsArNa,$total_KV_pairs_wi_IA,$KV_wi_IA);

输出:

int(49)
int(147)
int(3)

但是,如果您删除了第三个条件,例如,如果索引数组编号中的键值对是变量,则意味着您不再需要它,因此您应该遍历数组以获得两个第一个答案:

$InArWiAsArNa=0;
$total_KV_pairs_wi_IA=0;
foreach($arrs['name'] as $key=>$val){
    $InArWiAsArNa ++;
    $total_KV_pairs_wi_IA+=count($val);  
}

var_dump($InArWiAsArNa,$total_KV_pairs_wi_IA);

输出:

 int(49)
 int(147)