【发布时间】:2017-02-20 20:21:23
【问题描述】:
我正在为一个相当简单的任务而苦苦挣扎。
我正在使用 REST 后端,它有时会接收一个 json 对象作为参数,例如 "api?params={"foo":bar}" 。 “foo”可以是真/假或空(未定义)。
当我回显 myParam(foo) 时,它会回显“真”。 当 foo 为假时,它什么也不返回(我希望它回显“假”), 但是当 foo 未定义时,当它不在 API 调用中时,我希望它返回“null”。
我在网上找到了一个sn-p,我认为它可以工作。
$foo = (null !== $jsonObj->foo ? $jsonObj->foo: "");
但是当 foo 为 false 或 null 时它不起作用。
$foo = var_export($jsonObj->foo, true);
然而,这一行将变量作为字符串返回,并返回“正确”,它在 true 时返回“true”,在 false 时返回“false”,在 null 时返回“NULL”。我可以使用这个。
switch ($foo) {
case "true":
$result = true;
break;
...
但是,一定有更好的方法吗?对吧?
--- 更新 ---
现在对我有用的解决方案是: (由于我将值存储在数组中,存储 false 将等于“”)
$foo = is_null($jsonObj->foo) ? null : $jsonObj->foo;
这给了我 foo = null if null/undefined, else true/false...
然后将其存储在数组中,我使用了这个:
$array["foo"] = (!is_null($foo) ? intval($foo) : null);
这将其存储为 0/1 或“”,如果它为空,那么我有 3 个可以使用的状态。
但是阅读你所有的 cmets 让我尝试了最好的解决方案。
【问题讨论】: