我正在通过JQuery发送从JSON转换为序列化形式的PHP脚本数据(参见http://api.jquery.com/jQuery.ajax/)。 PHP将POST数据解释为一个大的关联数组,这很棒。
我想知道的是,是否可以在PHP中转换为布尔数组?通常,您是否可以在PHP中转换为类型化数组?
目前我在JavaScript中有一组布尔值,在PHP中被解释为一个字符串数组。我猜你不能用这种方式进行转换,因为PHP数组可以包含各种类型的组合吗?
答案 0 :(得分:2)
因为帖子数据是所有字符串,你的bool值会被解释为字符串。在这种情况下,您需要遍历数组并将值转换为bools,例如:
foreach($values as &$val)
$val = (bool)$val;
答案 1 :(得分:2)
你是说,你想转换成类似的东西:
array('TRUE', 'FALSE', 'TRUE', 'TRUE', 'FALSE');
到
array(TRUE, FALSE, TRUE, TRUE, FALSE);
然后,你可以使用这样的东西:
$a = array('TRUE', 'FALSE', 'TRUE', 'TRUE', 'FALSE');
function _str_to_bool($s) {
return strtolower($s) == 'true';
}
$a2 = array_map('_str_to_bool', $a));
var_export($a2);
// array(true, false, true, true, false)
如果你想要执行“真正的”强制转换(所以,只有当==“”时,字符串才会计算为false),只需更改回调函数中的代码,即可进行强制转换({{1}在这种情况下),或者你需要的任何东西。
答案 2 :(得分:1)
你是动态输入PHP的。但你仍然可以强制/转换类型。如果您知道false
的字符串和true
的字符串,您可以执行类似的操作,将其强制转换为数组
foreach( $array as &$value ) $value = ($value === $trueStr);
(编辑:乔治或阿迪尔的答案同样有效,如果真/假字符串值是真值/假值,如“1”和“0”,但如果 - 由于某种原因 - 您的数组会向您发送“是”和“否”,然后(bool) $value
将为true
,因为两者都是非空字符串。这个执行严格比较输入和真/假字符串值 - 如果有任何疑问,值将为false
)
答案 3 :(得分:1)
PHP没有像Java那样的布尔数组的概念。 “array”是一种类型,就像布尔值,整数和浮点数一样。
但是,数组可以包含布尔对象。您可以使用foreach
循环遍历数组并将单个元素转换为布尔值。
foreach ( $_POST as &$post_element ) {
$post_element = (bool)$post_element;
}
答案 4 :(得分:1)
PHP根据需要选择数据类型,您可以通过如下指定强制某些特定数据类型:
$var = (bool) 1;
但为什么你需要进行对话? PHP将根据您执行的操作更改数据类型。