如何计算JSON对象数组中的数组长度?

时间:2019-08-12 14:15:33

标签: php arrays json

我有一个 JSON(A行),如下所示,我要在其中计算JSON对象数组中的项目数。

   $fp = fopen('../feeds/ptp-ess_landing.json', 'w');
    fwrite($fp, json_encode($output));
    fclose($fp);
    logActivity();

    if(file_exists('../feeds/ptp-ess_landing.json')){
    $data = json_decode(file_get_contents('../feeds/ptp-ess_landing.json'));
    }

    {"toggle_multi_tiles":["0","1"]}  // Line A

此刻为2。也可以是3,有时是4。

这是我尝试过的:

$data->toggle_multi_tiles.length;   // Line B

执行echo $data->toggle_multi_tiles.length;时会返回Arraylength,这不是我得到的正确输出。

问题陈述:

我想知道应该在上面的B行的php代码中进行哪些更改,以使其返回2。

1 个答案:

答案 0 :(得分:2)

使用<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title></title> <script id="sap-ui-bootstrap" src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js" data-sap-ui-theme="sap_fiori_3" data-sap-ui-xx-bindingSyntax="complex" data-sap-ui-resourceroots='{ "app": "./" }' data-sap-ui-oninit="module:sap/ui/core/ComponentSupport" data-sap-ui-compatVersion="edge" data-sap-ui-async="true"> </script> <script> sap.ui.getCore().attachInit(function () { sap.ui.require([ "sap/m/Shell", "sap/ui/core/ComponentContainer", "sap/ui/model/xml/XMLModel" ], function (Shell, ComponentContainer, XMLModel) { new Shell({ app: new ComponentContainer({ height : "100%", name : "App" }) } ).placeAt("container"); var dataProfile = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<Profile Accessibility=\"false\" CREATED_BY=\"Administrator\" " + "Country=\"US\" PRINCIPAL_CREATION_DATE=\"0001387234199378\" " + "PRINCIPAL_MODIFY_DATE=\"0001564488020308\" locale=\"en_US\" uniquename=\"admin\"> " + "<NavigationItems> " + "<NavigationItem frame=\"\" label=\"OEE\" " + "target=\"/XMII/CM/App/index.html\" /> " + "<NavigationItem frame=\"\" label=\"Admin\" target=\"\"> " + "<NavigationItem frame=\"\" label=\"Administrator\" target=\"\"> " + "<NavigationItem frame=\"_blank\" label=\"Promoção\" " + "target=\"/XMII/CM/link1.html\" /> " + "<NavigationItem frame=\"_blank\" label=\"Label02\" " + "target=\"/XMII/CM/link2.html\" /> " + "<NavigationItem frame=\"_blank\" label=\"Label03\" " + "target=\"/XMII/CM/link3.html\" /> " + "<NavigationItem frame=\"_blank\" label=\"Label04\" " + "target=\"/XMII/CM/link4.html\" /> " + "<NavigationItem frame=\"_blank\" label=\"Label05\" " + "target=\"/XMII/CM/link5.html\" /> " + "</NavigationItem> " + "</NavigationItem> " + "</NavigationItems> " + "</Profile>"; var oModel = new XMLModel(); oModel.setXML(dataProfile); sap.ui.getCore().setModel(oModel,"Profile"); }); }); </script> </head> <body class="sapUiBody"> <div data-sap-ui-component data-name="app" data-id="container" data-settings='{"id" : "mes"}'></div> </body> </html> 来计算PHP数组中的元素数量

SELECT
    AccountFK,
    CASE WHEN B.ContractType = 'Telecoms' Then B.TermFeeMethod END AS TelecomsTermMethod,
    CASE WHEN B.ContractType = 'Broadband' Then B.TermFeeMethod END AS BroadbandTermMethod,
    CASE WHEN B.ContractType = 'Mobile' Then B.TermFeeMethod END AS MobileTermMethod,
    CASE WHEN B.ContractType = 'Water' Then B.TermFeeMethod END AS WaterTermMethod,
    ROW_NUMBER () OVER (PARTITION BY B.AccountFK ,B.TermFeeMethod ORDER BY A.CreatedDate DESC) AS RowNo
FROM 
    CRM.Contract.TermFeeTransaction AS A
    INNER JOIN ContractSnapshot AS B ON A.ContractFK = B.ContractID
WHERE 
CAST(b.CreatedDate as date) between '20180101' and '20190812'
AND B.TermFeeMethod IS NOT NULL 
AND ContractType IN
('Telecoms',
 'Broadband',
 'Mobile',
 'Water')
 and AccountFK = '12345'