Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图在php中取消设置数组,但无法确定如何取消设置_Php_Arrays - Fatal编程技术网

试图在php中取消设置数组,但无法确定如何取消设置

试图在php中取消设置数组,但无法确定如何取消设置,php,arrays,Php,Arrays,我的Json文件: "steam:1100001186575b4":[{"spawncode":"Sheepyr8tt","allowed":true},{"spawncode":"rikorwb","allowed":true},{"spawncode":"lexy","allowed":true

我的Json文件:

"steam:1100001186575b4":[{"spawncode":"Sheepyr8tt","allowed":true},{"spawncode":"rikorwb","allowed":true},{"spawncode":"lexy","allowed":true}]
$data = file_get_contents("whitelist.json");

$array = json_decode($data, true);

if(array_key_exists($steamHex, $array)) {
    $oldData = array([
        'spawncode' => $spawncode,
        'allowed' => true
    ]);
    
    unset($array[$oldData]);
}


$myfile = fopen("whitelist.json", "w") or die("Unable to open file!");
fwrite($myfile, json_encode($array));
fclose($myfile);
我的目标是通过表单发送steam和繁殖代码,并从steam中删除该繁殖代码

我的PHP文件:

"steam:1100001186575b4":[{"spawncode":"Sheepyr8tt","allowed":true},{"spawncode":"rikorwb","allowed":true},{"spawncode":"lexy","allowed":true}]
$data = file_get_contents("whitelist.json");

$array = json_decode($data, true);

if(array_key_exists($steamHex, $array)) {
    $oldData = array([
        'spawncode' => $spawncode,
        'allowed' => true
    ]);
    
    unset($array[$oldData]);
}


$myfile = fopen("whitelist.json", "w") or die("Unable to open file!");
fwrite($myfile, json_encode($array));
fclose($myfile);
目前它没有从数组中删除生成代码,我尝试了其他一些方法,例如

unset($array[$steamHex], $oldData)
但它最终会清除整个蒸汽和所有代码

如果有人有解决方案,请让我知道!
谢谢。

假设您要删除的是
$spawncode

$steamCode = 'steam code goes here';
$spawncode = 'spawn code to remove goes here';
$data = file_get_contents("whitelist.json");

$array = json_decode($data, true);

if (!empty($array[$steamCode])) {
    $array[$steamCode] = array_values(
        array_filter($array[$steamCode], function($scObject) use ($spawncode) {
            return $scObject['spawncode'] !== $spawncode;
        })
    );
}

$myfile = fopen("whitelist.json", "w") or die("Unable to open file!");
fwrite($myfile, json_encode($array));
fclose($myfile);

这似乎刚刚删除了enitre json文件。是的,我正在尝试从数组中删除spawncode,因此,例如,如果我放入“rikorwb”,它应该从数组中删除{“spawCode”:“rikorwb”,“allowed”:true},它在我的测试中正常工作。顺便说一句,这假设您的JSON实际上是:
{“steam:1100001186575b4”:[{“spawncode”:“Sheepyr8tt”,“allowed”:true},{“spawncode”:“rikorwb”,“allowed”:true},{“spawncode”:“lexy”,“allowed”:true}
即包装在
{
因为您最初发布的内容在没有此功能的情况下是无效的运行此功能时,
$spawncode
设置为
Sheepyr8tt
会产生
{steam:1100001186575b4:[{“spawncode”:“rikorwb”,“allowed”:true},{“spawncode”:“lexy”,“allowed”:true}
-是这样的格式,这里是json,还有一些东西,它真的很大,所以我不能全部发送:{“steam:11000010f668200”:[{“spawncode”:“ls430”,“allowed”:true},{“spawncode”:“lexy”,“allowed”:true}],“steam:11000010ef35135”:[{“spawncode”:“lexy”,“allowed”:true},{“spawncode”:“m3e36”,“allowed”:true},{“spawncode”:“allowncode”:“f40”,“allowed”:true}],“steam:110063851”:[{“spawncode”:“majsr”,“allowed”:true}],“steam:1100001121769fd”:[{“spawncode”:“tunak”,“allowed”:true},{“spawncode”:“cp9a”,“allowed”:true}]