from flask import Flask, request, jsonify
@app.route('/added', methods=['POST'])
def add():
data = request.get_json(force=True)
l = {'name': data['name']}
lingual.append(l)
return jsonify({'lang': lingual})
Если бы переменная, которую Вы проверяете, была бы в глобальной области видимости, Вы могли бы сделать:
array_key_exists('v', $GLOBALS)
Я должен сказать во всех своих годах относительно программирования PHP, я никогда не встречался с проблемой с isset()
возвращающий false на пустой переменной. OTOH, у меня есть возникшие проблемы с isset()
сбой на пустой записи массива - но array_key_exists()
работы правильно в этом случае.
Для некоторого сравнения, Значок явно определяет неиспользуемую переменную как возврат &null
, таким образом, Вы используете тест-пустого-указателя в Значке, чтобы также проверить на переменную сброса. Это действительно делает вещи легче. С другой стороны, Visual Basic имеет несколько состояний для переменной, которая не имеет значения (Пустым, Пустым, Ничто...), и часто необходимо проверять на больше чем одного из них. Это, как известно, источник ошибок.
Попытайтесь использовать
unset($v)
, Это кажется единственным временем, переменная не установлена, когда это конкретно сброшено ($v). Это кажется, что Ваше значение 'существования' отличается, чем определение PHP. ПУСТОЙ УКАЗАТЕЛЬ является, конечно, существующим, это является ПУСТЫМ.
Если я выполняю следующее:
echo '<?php echo $foo; ?>' | php
я получаю ошибку:
PHP Notice: Undefined variable: foo in /home/altern8/- on line 1
, Если я выполняю следующее:
echo '<?php if ( isset($foo) ) { echo $foo; } ?>' | php
я не получаю ошибку.
, Если у меня есть переменная, которая должна быть установлена, я обычно делаю что-то как следующее.
$foo = isset($foo) ? $foo : null;
или
if ( ! isset($foo) ) $foo = null;
Тот путь, позже в сценарии, я могу безопасно использовать $foo и знать, что это "установлено", и что это принимает значение по умолчанию к пустому указателю. Позже я могу if ( is_null($foo) ) { /* ... */ }
, если я должен и знаю наверняка, что переменная существует, даже если это является пустым.
полное isset документация чтения немного больше, чем, что первоначально вставлялось. Да, это возвращает false для переменной, которая была ранее установлена, но теперь пустая, но это также возвращает false, если переменная еще не устанавливалась (никогда) и ни для какой переменной, которая была отмечена как сброс. Это также отмечает, что ПУСТОЙ байт (" \0") не считают пустым и возвратит true.
Определяют, установлена ли переменная.
, Если переменная была сброшена со сбросом (), это больше не будет устанавливаться. isset () возвратит FALSE при тестировании переменной, которая была установлена в NULL. Также обратите внимание, что ПУСТОЙ байт (" \0") не эквивалентен ПУСТОЙ константе PHP.
Свойства объектов могут быть проверены на существование пример property_exists
от модульного теста:
function testPropertiesExist()
{
$sl =& $this->system_log;
$props = array('log_id',
'type',
'message',
'username',
'ip_address',
'date_added');
foreach($props as $prop) {
$this->assertTrue(property_exists($sl, $prop),
"Property <{$prop}> exists");
}
}
Вы можете использовать компактную языковую конструкцию для проверки на существование нулевой переменной. Переменные, которых не существует, в результате не появятся, а нулевые значения покажут.
$x = null;
$y = 'y';
$r = compact('x', 'y', 'z');
print_r($r);
// Output:
// Array (
// [x] =>
// [y] => y
// )
В случае с вашим примером:
if (compact('v')) {
// True if $v exists, even when null.
// False on var $v; without assignment and when $v does not exist.
}
Конечно, для переменных в глобальном масштабе вы также можете использовать array_key_exists().
B.t.w. Лично я бы избегал ситуаций вроде чумы, когда есть семантическая разница между несуществующей переменной и переменной, имеющей нулевое значение. PHP и большинство других языков просто не думают, что есть.
.Думаю, очевидный ответ на все это ... Не инициализируйте свои переменные как NULL, инициализируйте их как нечто, имеющее отношение к тому, чем они должны стать .
NULL следует рассматривать как «несуществующее значение», что является значением NULL. Переменная не может быть классифицирована как существующая в PHP, потому что она не была сказал, каким типом сущности он пытается быть. Он также может не существовать, поэтому PHP просто говорит: «Хорошо, это не так, потому что в этом нет никакого смысла, а NULL - мой способ сказать это».
Давайте теперь поспорим. «Но NULL - это то же самое, что сказать 0 или FALSE или».
Wrong, 0-FALSE- '' все по-прежнему классифицируются как пустые значения, но они УКАЗАНЫ как некоторый тип значения или заранее определенный ответ на вопрос. FALSE - это ответ на вопрос «да» или «нет», '' - это ответ на заголовок, который кто-то прислал, а 0 - это ответ на количество или время и т. Д. ARE установлены как некоторый тип ответа / результата, что делает их действительными как установленные.
NULL - это просто нет ответа, что бы то ни было, он не говорит нам да или нет, он не сообщает нам время и не Не говорите нам, что отправлена пустая строка. Это основная логика в понимании NULL.
Речь идет не о создании дурацких функций, чтобы обойти проблему, это просто меняет то, как ваш мозг смотрит на NULL. NULL, предположим, что он не установлен как что-либо. Если вы предварительно определяете переменные, тогда предварительно определите их как 0, FALSE или "" в зависимости от типа их использования.
Не стесняйтесь цитировать это. Это не в моей голове :)