PHP将通过AJAX发送的布尔值转换为字符串

时间:2017-10-03 11:33:46

标签: php jquery ajax

我正在使用AJAX向PHP发送这样的内容:

var details = [{name: "thing1", value: true}, {name: "thing2", value: true}, {name: "thing3", value: false}]

$.ajax({
    url: 'myphp.php',
    type: 'POST',
    dataType: 'JSON',
    data: {
        universalDetails: details,
    },
//...etc.

在我的PHP中,如果我包含这个:

$universalDetails = $_POST["universalDetails"];
var_dump($universalDetails);

我的所有value都显示为数组中的字符串......就像这样:

{ ["name"]=> string(20) "thing1" ["value"]=> string(4) "true" }

这里发生了什么?我如何将这些保留为布尔值?

1 个答案:

答案 0 :(得分:1)

这是设计上的,因为每个POST / GET参数基本上都是一个字符串。您可以尝试执行if($_POST['universalDetails']['value'] == 'true') ...,因为PHP会将字符串"true"更改为值为true的布尔值(不是字符串!):

更多信息:https://secure.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

但请注意:var_dump((bool) "false"); // bool(true)