为了账号安全,请及时绑定邮箱和手机立即绑定

计算数组中“列”的数量(php)

计算数组中“列”的数量(php)

PHP
白衣非少年 2022-01-14 16:09:29
我有以下 JSON:[    {       "0":"2019-08-31",      "1":"Bank Exp.",      "2":"AED",      "3":"30",      "4":"",      "5":"BANK FEE 10"   },   {       "0":"2019-08-31",      "1":"Inventory",      "2":"AED",      "3":"122",      "4":"",      "5":"DEPOSIT 10000"   },   {       "0":"2019-08-31",      "1":"Petty Cash",      "2":"AED",      "3":"4999",      "4":"",      "5":"DEPOSIT 10000"   }]我正在尝试计算 Json 中元素或列的数量。结果应该是 6。我试过 echo count($data_array); (或 sizeof)结果为 3(行数)。考虑到我必须将特定行的最大列数设置为列数,我如何计算这个 Json 中的“列”?我必须使用循环来计数还是可以用一条指令来计算?
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

假设某些 var $json 包含您上面的 JSON 代码,您应该知道以下代码将生成stdClass类型的对象数组:


$data_array = json_decode($json);

所以 $data_array 实际上是一个数组,但它包含对象。正如您所指出的,这将返回JSON中的行数:


echo sizeof($data_array);

显然,列数不是行数。如果您想知道列数,则需要检查$data_arrayvar 的一个或多个行/对象/元素。只看第一个元素是方便的:


$col_count = sizeof($data_array[0]);

但是,如果 $data_array 的元素是 stdClass 类型的对象,这将导致 E_WARNING:


PHP Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /tmp/foo.php on line 33

您可以选择使用json_decode函数的第二个参数,这将强制 PHP 将 JSON 代码中的每个大括号对象解码为关联数组而不是 stdClass 对象:


$data_array = json_decode($json, TRUE);

$col_count = sizeof($data_array[0]);

这会产生一个$col_count值,该值对于数组中的第一个对象6是正确的。您应该考虑 $data_array 中后面的元素可能有更多或更少的列,具体取决于数据的结构。如果您确定所有元素将具有相同的列数,这就足够了,但是如果您有杂乱的数据,您可能需要检查数据数组的每个元素以查看真实的列数是多少:


$data_array = json_decode($json, TRUE);

$col_count = 0;

foreach($data_array as $row) {

        $col_count = max($col_count, sizeof($row));

}

var_dump($col_count);

这将产生一个$col_count值,该值反映 JSON 的任何元素中遇到的最大列数。显然,如果您的 JSON 包含大量元素,则可能需要考虑性能。这完全取决于您的 JSON 数据和应用程序的性质。


编辑:我认为你可以摆脱这个,而不是显式的 foreach 循环,但它仍然需要 PHP 循环遍历你的数据结构。也就是说,它可能会更快:


$max_col_count = max(array_map("count", $data_array));


查看完整回答
反对 回复 2022-01-14
?
慕容森

TA贡献1853条经验 获得超18个赞

count($data_array)计算数组中元素的数量。在您的情况下,是 3。但是您的数组是多维的(矩阵)。因此,您需要依靠一些索引来获取该位置的列数:


<?php

echo count($data_array[0]);


查看完整回答
反对 回复 2022-01-14
  • 2 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号