from: http://matplotlib.org/api/path_api.html#module-matplotlib.path
Пользователи объектов Path не должны обращаться к вершинам и массивы кодов. Вместо этого они должны использовать iter_segments (), чтобы получить пары вершин / кодов. Это важно, так как многие объекты Path, как оптимизация, вообще не сохраняют коды, но имеют по умолчанию для них iter_segments ().
В противном случае я не совсем уверен, в чем ваш вопрос. [Zip] - иногда полезная встроенная функция при работе с координатами. 1
Это не работало на меня.
if (empty($variable) && '0' != $variable) {
// Do something
}
я использовал вместо этого:
if (empty($variable) && strlen($variable) == 0) {
// Do something
}
Я редко использую empty()
по причине, которую Вы описываете. Это путает законные значения с пустотой. Возможно, это - потому что я делаю большую работу в SQL, но я предпочитаю использовать NULL
для обозначения отсутствия значения.
PHP имеет функцию is_null()
, который тестирует на переменную или выражение, являющееся NULL
.
$foo = 0;
if (is_null($foo)) print "integer 0 is null!\n";
else print "integer 0 foo is not null!\n";
$foo = "0";
if (is_null($foo)) print "string '0' is null!\n";
else print "string '0' is not null!\n";
$foo = "";
if (is_null($foo)) print "string '' is null!\n";
else print "string '' is not null!\n";
$foo = false;
if (is_null($foo)) print "boolean false is null!\n";
else print "boolean false is not null!\n";
можно также использовать, точно равняется оператору ===
, чтобы сделать подобный тест:
if ($foo === null) print "foo is null!\n";
Это верно, если $foo
NULL
, но не, если это false
, нуль, ""
, и т.д.
"0" всегда рассмотрены ложью (или пустой) в PHP, и это имеет много смысла (не, что я буду обсуждать это здесь). Если Вы хотите иметь нуль, оценивают к истинному также, используют strlen($value)
.
"Фиксация" является одной точкой зрения. Другой должен был бы предположить, что это не "повреждается", и учитесь работать с ним способ, которым это было намеренно разработано.
, Учитывая проблему, поскольку Вы описываете его, лучшая вещь состояла бы в том, чтобы ограничить Ваш код, таким образом, переменная не может быть помещена в неопределенное состояние типа. Иначе Вы захотите протестировать на тип данных с помощью gettype ().
Вообще говоря, Вы хотите использовать тройное, равняется оператору для определения, когда значение действительно является пустым или ложным. Это более конкретно и результаты ВСЕГДА возврат точно как ожидалось.
Создание отдельной функции, чтобы сделать что-то, что можно сделать в одной строке кода, но использование различного оператора, кажется, является чрезмерно сложным и добавляет дополнительную путаницу.
Кроме того, многие программисты склонны использовать 0 или пустая строка для обозначения несуществующего значения, но это более корректно (и я чувствую лучшую практику) для использования нулевого значения для обозначения любого значения (независимо от типа), который действительно не существует.
Я создал IsEmpty()
краткая быстрая функция.
function IsEmpty($mData) {
return is_int($mData) ? false :
is_string($mData) ? $mData=="" :
empty($mData);
}
Наиболее эффективное решение для этой проблемы должно протестировать, если переменная является ложью, например,
if (!$variable_name) {echo $variable_name;}
не имеет значения, если переменная является пустой или пустой, все это равняется лжи, когда вставлено если условное выражение.
Вы пытаетесь использовать empty()
для чего-то это не предназначается для. Лично, я думаю, что это - поведение, прибывает из более старой парадигмы программирования в PHP, и это могло, вероятно, быть ликвидировано.
Вместо этого осуществите свои более явные проверки. Вместо того, чтобы проверять, не ли значение полезно, проверьте, что это. Например, если Вы хотите массив, проверьте, что это - массив (is_array()
) вместо того, чтобы проверять, является ли это строкой.
Кроме того, можно полагаться на то, что все $_POST
и $_GET
переменные являются строками, таким образом, можно сделать сравнения с"", или проверять это strlen() == 0
.