我有一个关联php数组,其中的值是布尔值。我正在尝试迭代数组并将其分配给变量,然而,提取的值显示为空白
var_dump(info)输出为:
array(6)
{
["are_all_daily_budgets_spent"]=> bool(false)
["has_account_hit_spend_limit"]=> bool(false)
["has_campaign_group_hit_spend_limit"]=> bool(false)
["is_adgroup_partially_rejected"]=> bool(false)
["is_account_closed"]=> bool(false)
["is_daily_budget_spent"]=> bool(false)
}
我需要提取布尔值并将其分配给单独的变量。
我试着做以下代码:
foreach ($info as $key => $value) {
echo $key;
echo $value;
}
但语句echo$value不会产生任何结果。
此外,你能帮我制作以下输出吗are_all_daily_budgets_spent = 0
has_account_hit_spend_limit = 0
但是语句
echo $value
不会产生任何结果。
实际上,在PHP中,布尔值true
显示为1
,而布尔值false
显示为空字符串(即不显示任何内容)。做出这一决定的原因之一可能是需要与PHP将其他类型的值转换为布尔值的方式保持一致。
出于调试目的,可以使用var_dump()
而不是echo()
。它以明确的方式向您显示变量的值及其类型:
foreach ($info as $key => $value) {
echo($key);
var_dump($value);
}
但您已经知道,您在问题中发布的数组的文本表示是使用var_dump($info);
生成的。
更新
如果您需要从数组的键和值生成变量,那么您有很多选项。
您可以一个接一个地提取值(不一定全部提取),并在本地范围中创建变量:
$are_all_daily_budgets_spent = $info['are_all_daily_budgets_spent']; $has_account_hit_spend_limit = $info['has_account_hit_spend_limit']; // ...
如果要使用整数值(
1
表示TRUE
,0
表示FALSE
),只需将从数组中提取的值转换为integer
:$are_all_daily_budgets_spent = (int)$info['are_all_daily_budgets_spent']; $has_account_hit_spend_limit = (int)$info['has_account_hit_spend_limit']; // ...
您可以执行与上面相同的操作,但在循环中(并提取数组中包含的所有值):
foreach ($info as $key => $value) { $$key = (int)$value; }
这里,
$$key
使用称为变量的特性。它首先解释$key
,得到它的值(字符串are_all_daily_budgets_spent
),然后将$are_all_daily_budgets_spent
解释为一个新变量,创建它并将(int)$value
存储在其中。基本上,这与我们在以前的方法中所做的相同,只是自动的。您也可以使用PHP函数
extract()
:extract($info);
它基本上产生了与第2项上的代码相同的结果。
警告
当存储在$info
中的数据来自外部来源(浏览器、API、用户输入等)时,不要使用方法#2和#3。它会带来很高的安全风险,因为它可能会用您无法控制的值覆盖您的变量。
您可以在echo之前将boolean
类型更改为int
,请检查以下代码:
foreach ($info as $key => $value) {
echo $key;
echo (int)$value;
}
编辑(示例2):
foreach ($info as $key => $value) {
echo '"' . $key . '" = ';
echo ($value ? 'True/' : 'False/') . (int)$value . "n";
}
在PHP中,尝试回显布尔值永远不会实际打印"true"或"false"。
echo true;
将打印1,并且
echo false;
只是不会打印任何内容。试试这个:
echo $boolean ? 'true' : 'false';
这使用三元运算符。
在php中,您不能回显具有布尔值的变量,在这种情况下,您可以检查该变量并将其转换为字符串。您可以在以下示例中看到这个过程:
foreach ($info as $key => $value)
{
$output = $value ? 'true' : 'false';
echo $key.'='.$output.'<hr/>';
}