在我看来,问题与您遍历数据的方式有关。
例如,在foreach ($data1['data'] as $key )中,$key已经是关联数组(例如,array("label" => "Signed-in Client", "value" => 2)),因此应该仅使用$key['label']而不是$key[0]['label']。
此外,当您要修改'value'时,必须访问相同的关联数组,而不是原始变量$data1。
实现此目的的一种方法如下所示。在该示例中,使用引用(&$key)遍历数组$data1['data']。请注意,应该在foreach块之后取消设置此变量,以断开与正在遍历的数组的最后一个元素的关联。
$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);
?>