如何查找数组中有多少个键?

时间:2019-03-17 13:38:20

标签: php arrays json

我这样做是为了找出Array中有多少value

$forExample = '{"sik1":"hello","sik2":"world","sik10":"today","sik41":"yesterday"}';

在上面的示例中,共有4个值。

我尝试过了

$test = json_decode($forExample);
        $rows = count($test); 

        for ($valueCount = 0;
             $valueCount < $rows;
             $valueCount ++) {
            if ($rows) {
                if ($test->{'sik'[$valueCount]} != '') {
                    echo $test->{'sik'[$valueCount]};
                }
            }
        } 

我在哪里犯错?

3 个答案:

答案 0 :(得分:1)

您必须在json_decode($json, true)上添加true作为第二个参数,这将返回一个数组。

然后count(array_keys ($array))将返回数组中的键计数。

请检查文档中有关功能的预期行为。

答案 1 :(得分:0)

您无法使用逻辑从json中打印完整的值。

首要问题是,您正在计算json object,这将给您带来类似的错误。

  

警告:count():参数必须是实现Countable in。的数组或对象。

当然,如果您喜欢json_decode($forExample, true);,它将转换为关联的array并取count,当然可以算数。

for循环存在逻辑问题,即使您获得了如我上面建议的数组计数,

因此count为4。您循环并使用$valueCount查找其密钥,该密钥将0移至3。根据您的逻辑,键将类似于sik0sik1sik2sik3,但实际键是sik1sik2,{{ 1}}和sik10。因此,您只会得到sik41sik1

解决方案

使用sik2循环

foreach

输出

<?php

$forExample = '{"sik1":"hello","sik2":"world","sik10":"today","sik41":"yesterday"}';
$test = json_decode($forExample);

foreach ($test as $key => $value){
    echo $key, ' => ', $value;
    echo '<br>';
}

?>

答案 2 :(得分:-1)

您的数组定义错误,请尝试:

<?php
$forExample =
    array("sik1"=>"hello",
    "sik2"=>"world",
    "sik10"=>"today",
    "sik41"=>"yesterday");
var_dump(count($forExample));
?>