这几天学习php.首先抱歉,如果它是一个愚蠢的查询.
<?php
$cfg['x']['y']['z'] = "TRUE";
$cfg['x']['y'] = "FALSE";
print_r($cfg['x']['y']['z']); //what to change here to get required output
?>
Run Code Online (Sandbox Code Playgroud)
输出: F
但我的预期输出是真的
我应该改变什么?
这里$cfg['x']['y']['z']不再存在,因为你覆盖了$cfg['x']['y']哪个包含$cfg['x']['y']['z'].
$cfg['x']['y'] = "FALSE";
Run Code Online (Sandbox Code Playgroud)
在这里,您尝试获取变量的'z'元素$cfg['x']['y'].这是一个字符串,因为你FALSE输入引号.'z'通过PHP的类型杂耍转换为零.所以0字符串的元素'false是F
print_r($cfg['x']['y']['z']);
Run Code Online (Sandbox Code Playgroud)
没有真正的方法可以按照您的意图来完成这项工作.您应该分配FALSE一个新变量或转换$cfg['x']['y']为一个数组,以便它可以包含多个值:
$cfg['x']['y'] = array(
'z' = "TRUE",
'newKey' = ""
);
Run Code Online (Sandbox Code Playgroud)
仅供参考,如果您打算使用"TRUE"和"FALSE"作为布尔值,则不应将它们用引号括起来,否则它们就是字符串.其结果是既"TRUE"和"FALSE"评估,以true还由于PHP的类型戏法.