Я создам 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, а не снаружи. Спасибо
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}]
постскриптум Лично я бы не стал писать для этого собственную функцию. Просто приготовьтесь (bool)
непосредственно к вашему значению массива.
$arrayList = [ [ 'uid' => 1234, 'nilai' => (bool) 1 ] ];
Опять же, если у вас есть отрицательные числа или какой-то другой случай, используйте:
if ($value == 0) {
return false; // boolean, not string
} else {
return true; // boolean, not string
}
Других решений пока нет …