我这样做是为了找出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]};
}
}
}
我在哪里犯错?
答案 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
。根据您的逻辑,键将类似于sik0
,sik1
,sik2
和sik3
,但实际键是sik1
,sik2
,{{ 1}}和sik10
。因此,您只会得到sik41
和sik1
。
解决方案
使用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));
?>