使用键/索引规范将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

我正在尝试使用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_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;
}