可以在php中转换为布尔数组吗?

时间:2011-07-29 22:14:59

标签: php ajax json casting

我正在通过JQuery发送从JSON转换为序列化形式的PHP脚本数据(参见http://api.jquery.com/jQuery.ajax/)。 PHP将POST数据解释为一个大的关联数组,这很棒。

我想知道的是,是否可以在PHP中转换为布尔数组?通常,您是否可以在PHP中转换为类型化数组?

目前我在JavaScript中有一组布尔值,在PHP中被解释为一个字符串数组。我猜你不能用这种方式进行转换,因为PHP数组可以包含各种类型的组合吗?

5 个答案:

答案 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将根据您执行的操作更改数据类型。