【问题标题】:How to Call Function inside Array如何在数组中调用函数
【发布时间】:2019-06-11 05:17:02
【问题描述】:

我将使用带有 json_encode 的 PHP 创建一个 json 文件。我打算在将其更改为 json 之前包含一个将在数组中调用的函数。数组内部的函数是否可以调用?

$arrayList = array( 
                array( 
                'uid' => "1234",
                'nilai' => getBoolean (1)));                
function getBoolean ($value) {
    if ($value == 0 ) {
        echo "false";
    } else {
        echo "true";
    }   
}
echo json_encode ($arrayList);

输出json

true[{"uid":"1234","nilai":null}]

如果我想要像下面这样的 json 输出怎么办

[{"uid":"1234","nilai":true}]

所以函数 (getBoolean) 的值进入 json 而不是外部。谢谢

【问题讨论】:

    标签: php arrays boolean return-type custom-function


    【解决方案1】:

    PHP 使用applicative order evaluation strategy,因此getBoolean(1) 将在数组被分配给$arrayList 之前被评估。

    但是,您的 getBoolean 函数中存在错误。你需要return一个布尔类型的值,而不是布尔的字符串版本。

    代码:(https://3v4l.org/AOdn3B)

    $arrayList = [ [ 'uid' => '1234', 'nilai' => getBoolean (1) ] ];
    
    function getBoolean ($value) {
        return (bool) $value;
    }
    
    echo json_encode ($arrayList);
    

    输出:

    [{"uid":"1234","nilai":true}]
    

    附言我个人不会为此费心编写自定义函数。只需将 (bool) 直接添加到您的数组值。

    $arrayList = [ [ 'uid' => 1234, 'nilai' => (bool) 1 ] ];
    

    然后,如果您有负数或其他一些边缘情况,请使用:

    if ($value == 0) {
        return false; // boolean, not string
    } else {
        return true; // boolean, not string
    }   
    

    【讨论】:

    • 谢谢它的工作,我只是想给出一个字符串值,所以它不是真正的布尔值呵呵..
    猜你喜欢
    • 2023-04-01
    • 2015-02-27
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多