【发布时间】:2018-07-11 19:20:19
【问题描述】:
我正在使用一个 API,它返回有关数据库中用户的 JSON。
我在评估用户数据中的一些布尔值时遇到了一些问题。我已将所有信息提取到一个名为 $search_results 的数组中 - 然后我循环遍历该数组以检查它们是否在 ok_to_list_donor 字段中列出了任何内容。
如果ok_to_list_donor 为空,我需要检查我们是否有权限。如果我们确实获得了许可,那么我将用他们的名字更新ok_to_list_donor_field。
如果我们没有权限,我会用 AnonymousXXXX 更新它,其中 XXXX 是他们的内部 ID。
在某些情况下,他们没有给予我们明确的许可,也没有拒绝我们。该值很可能返回为 NULL,因此我们使用 Anonymous?XXXX 来表示。
这是我正在使用的循环。
foreach ($search_results as $fields) {
// If they don't have an "ok to list donor" value, check if we have permission
if (empty($fields["donor"]["ok_to_list_donor"])) {
// If we don't have permission, update as anon
if ((boolean)$fields["permisson"] === (boolean)false) {
var_dump($fields["permission"]);
echo "Update as AnonXXXX";
}
// If we do have permission, update the field with name
elseif ((boolean)$fields["permission"] === (boolean)true) {
var_dump($fields["permission"]);
echo "Update as First Name Last Name";
}
// The only possible case left
// If permission is null, it's unclear
else {
var_dump($fields["permission"]);
echo "Update as Anon?XXXX";
}
}
}
我包含了 var_dump 来检查 $fields["permission"] 的类型和值,并且我得到了我预期的所有值,但是,即使 $fields["permission"] 评估为 (bool)true - 我看到了我的调试输出对于(bool)false 案例。
我进行了类型转换,因为我在比较 $fields["permission"] === false 等等时遇到了这个错误,并且想确保来自 API 的数据完全符合我的预期。
这是我看到的输出:
bool(true)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
bool(false)
Update as AnonXXXX
我是否错误地进行了布尔比较? PHP 新手,不确定我是否遗漏了一些重要内容
【问题讨论】:
-
error_reporting(E_ALL); ini_set('display_errors', '1');会告诉你这个问题。