PHP array_key_exists 工作不正常
PHP array_key_exists not working correctly
我有一个 php 脚本,可以将虚拟名称分配给 ip 地址。
<?php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
$read = file_get_contents("vnames.json");
$json = json_decode($read);
var_dump($_SERVER["REMOTE_ADDR"]);
if(!array_key_exists($_SERVER["REMOTE_ADDR"], $json)){
$json[$_SERVER["REMOTE_ADDR"]] = generateRandomString();
$read = json_encode($json);
echo "This if statement is true!";
file_put_contents("vnames.json", $read);
}
?>
names.json里面只有一对空括号
所以,我发现 !array_key_exists($_SERVER["REMOTE_ADDR"], $json)
是错误的。但是,我确定 names.json 不包含我的 IP 地址。
我假设这是正在评估的内容:
<?php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
$read = file_get_contents("vnames.json");//blank
$json = json_decode($read);//null
var_dump($_SERVER["REMOTE_ADDR"]);//My ip
if(!array_key_exists($_SERVER["REMOTE_ADDR"], $json)/*false*/){
$json[$_SERVER["REMOTE_ADDR"]] = generateRandomString();
$read = json_encode($json);
echo "This if statement is true!";
file_put_contents("vnames.json", $read);
}
?>
但在那种情况下,file_get_contents 无法正常工作。
请帮忙!
array_key_exists
仅适用于数组,而 $json
变量包含一个对象。
将 $json
更改为 array
或使用 property_exists
作为对象。
将 $json 转换为数组的示例
$json = json_decode($read, true);
我有一个 php 脚本,可以将虚拟名称分配给 ip 地址。
<?php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
$read = file_get_contents("vnames.json");
$json = json_decode($read);
var_dump($_SERVER["REMOTE_ADDR"]);
if(!array_key_exists($_SERVER["REMOTE_ADDR"], $json)){
$json[$_SERVER["REMOTE_ADDR"]] = generateRandomString();
$read = json_encode($json);
echo "This if statement is true!";
file_put_contents("vnames.json", $read);
}
?>
names.json里面只有一对空括号
所以,我发现 !array_key_exists($_SERVER["REMOTE_ADDR"], $json)
是错误的。但是,我确定 names.json 不包含我的 IP 地址。
我假设这是正在评估的内容:
<?php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
$read = file_get_contents("vnames.json");//blank
$json = json_decode($read);//null
var_dump($_SERVER["REMOTE_ADDR"]);//My ip
if(!array_key_exists($_SERVER["REMOTE_ADDR"], $json)/*false*/){
$json[$_SERVER["REMOTE_ADDR"]] = generateRandomString();
$read = json_encode($json);
echo "This if statement is true!";
file_put_contents("vnames.json", $read);
}
?>
但在那种情况下,file_get_contents 无法正常工作。 请帮忙!
array_key_exists
仅适用于数组,而 $json
变量包含一个对象。
将 $json
更改为 array
或使用 property_exists
作为对象。
将 $json 转换为数组的示例
$json = json_decode($read, true);