使用键/索引规范将PHP数组转换为json
我正在尝试使用php向json文件添加一个数组 我希望它看起来如何(格式不重要): 我的结果实际上是什么样子的:使用键/索引规范将PHP数组转换为json,php,json,Php,Json,我正在尝试使用php向json文件添加一个数组 我希望它看起来如何(格式不重要): 我的结果实际上是什么样子的: {"swagg_ma_blue":{"user":"swagg_ma_blue","admin":true,"user_id":"000"},"0":{"user":"d4ne","admin":true,"user_id":"000"}} 如您所见,第二个元素的数组索引/键被称为“0”,但我需要它具有user值 我的代码: <?php class add_mod_c
{"swagg_ma_blue":{"user":"swagg_ma_blue","admin":true,"user_id":"000"},"0":{"user":"d4ne","admin":true,"user_id":"000"}}
如您所见,第二个元素的数组索引/键被称为“0”
,但我需要它具有user
值
我的代码:
<?php
class add_mod_class {
function __construct($username, $status){
$this->username = $username;
$this->status = $status;
$this->user_id = '000';
$this->json_file = 'includes/json/mods.json';
}
function get_json(){
$json_content = file_get_contents($this->json_file);
$json = json_decode($json_content, true);
return $json;
}
function mod_handler(){
if($this->status == 'admin'){
return true;
}else{
return false;
}
}
function add_mod(){
$mods = $this->get_json();
$data = array(
'user' => $this->username,
'admin' => $this->mod_handler(),
'user_id' => $this->user_id
);
array_push($mods, $data);
$new_json_string = json_encode($mods);
return $new_json_string;
}
}
?>
但这仍然会在其中返回
“0”:
。我将非常感谢您的帮助。您的第一种方法很好,只是您应该分配给$mods
数组,而不是$data
。以下是修正后的函数:
function add_mod(){
$mods = $this->get_json();
$mods[$this->username] = array(
'user' => $this->username,
'admin' => $this->mod_handler(),
'user_id' => $this->user_id
);
$new_json_string = json_encode($mods);
return $new_json_string;
}
你的第一个想法似乎是正确的,应该可以。当然没有
数组\u push()
。您如何/在哪里调用此方法并使用结果?我不得不使用array\u push()
重新创建json\u encode
。完成后,我将使用:file\u put\u contents()
将json代码保存到一个文件中,并以以下格式调用该方法:if(!empty($\u POST)){require\u once('includes/add\u mod\u class.php');$mod\u user=$\u POST['user'];$mod status=$\u POST['status'];$mod add=new add\u mod\u mod class($mod用户,$mod status)$object=$mod_add->add_mod();}
array_push
在数组末尾添加一个带有数字索引的元素。只需使用$modes[$this->username]=$data
而不是array\u push($mods,$data)
$data[$this->username] = array(
'user' => $this->username,
'admin' => $this->mod_handler(),
'user_id' => $this->user_id
);
function add_mod(){
$mods = $this->get_json();
$mods[$this->username] = array(
'user' => $this->username,
'admin' => $this->mod_handler(),
'user_id' => $this->user_id
);
$new_json_string = json_encode($mods);
return $new_json_string;
}