Как вызвать функцию внутри массива - PullRequest
0 голосов
/ 17 января 2019

Я создам файл json с PHP с помощью json_encode. Я намереваюсь включить функцию, которую я буду вызывать внутри массива, прежде чем изменить ее на 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, а не снаружи. Спасибо

1 Ответ

0 голосов
/ 17 января 2019

PHP использует аппликативную стратегию оценки порядка , поэтому 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}]

p.s. Лично я бы не стал писать для этого собственную функцию. Просто добавьте (bool) непосредственно к значению вашего массива.

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

Опять же, если у вас отрицательные числа или какой-то другой случай, используйте:

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