我是新手,所以请一起来。我很确定我的代码和语法是正确的。
这是我的json文件
{"data":
[
{"label":"Signed-in Client","value":2
}
]
}
这是我的php代码
<?php
$conn=mysqli_connect("localhost", "root","","something");
$res1 = mysqli_query($conn, "SELECT * FROM tbl_pet_owner ORDER BY pet_owner_id");
$max1 = mysqli_num_rows($res1);
$jsonString = file_get_contents('data.json');
$data1 = json_decode($jsonString, true);
foreach ($data1['data'] as $key )
{
if ($key[0]['label'] == "Signed-in Client")
{
$data1['value'] = $max1;
}
}
$newJsonString = json_encode($data1);
file_put_contents('data.json', $newJsonString);
?>
但是当我刷新时,它不会使用我的查询的最大计数进行更新。我希望你能帮助我。这是我的论文
答案 0 :(得分:1)
在我看来,问题与您遍历数据的方式有关。
例如,在foreach ($data1['data'] as $key )
中,$key
已经是一个关联数组(例如,array("label" => "Signed-in Client", "value" => 2)
),因此我应该只使用$key[0]['label']
代替$key['label']
而不是'value'
此外,当您要修改$data1
时,必须访问相同的关联数组,而不是原始变量$data1['data']
。
实现这一目标的一种方法如下所示。在该示例中,使用引用(&$key
)遍历数组foreach
。请注意,应该在<?php
$max1 = 100;//just an example
$jsonString = file_get_contents('data.json');
$data1 = json_decode($jsonString, true);
foreach ($data1['data'] as &$key )
{
print_r($key);
if($key['label'] == "Signed-in Client")
{
$key['value'] = $max1;
}
}
unset($key);
print_r($data1);
/* gives:
Array
(
[data] => Array
(
[0] => Array
(
[label] => Signed-in Client
[value] => 100
)
)
)
*/
//$newJsonString = json_encode($data1);
//file_put_contents('data.json', $newJsonString);
?>
块之后取消设置此变量,以断开与正在遍历的数组的最后一个元素的关联。
{{1}}