У меня есть веб-форма, которую пользователи могут заполнить, и этот контент заполняет PDF с FPDF и PHP. Когда пользователь вводит слово с апострофом, перед ним в PDF появляется косая черта.
Точно так же специальные символы, такие как символы товарных знаков, кодируются неправильно.
Часто задаваемые вопросы FPDF говорят, что использовать:
$str = utf8_decode($str);
Но я просто не знаю, как применить это ко всему PDF. Я пытаюсь думать об этом, как будто это HTML-страница, но это не помогает. if ($ var == TRUE) {$ foo = "bar"; } или if ($ var == TRUE) {$ foo = "bar"; } else {$ foo = ""; } or $foo = ($var==TRUE) ? ...
How should the following boolean expression be written in PHP:
$foo = "";
if($var==TRUE){
$foo = "bar";
}
or
if($var==TRUE){
$foo = "bar";
}else{
$foo = "";
}
or
$foo = ($var==TRUE) ? "bar": "";
Во-первых, true
не является константой, это токен, поэтому, пожалуйста, не прописывайте его (я знаю, что некоторые стандарты это делают, но я думаю, что это сбивает с толку смысл) ...
Во-вторых, вам не нужно избыточное сравнение $ var == true
внутри if
.Это точно так же, как if ($ var) {
(Для двойного сравнения ==
. Идентичное сравнение ===
должно быть явным).
В-третьих, я предпочитаю предварительную инициализацию. Итак:
$foo = '';
if ($var) {
$foo = 'one status';
} else {
$foo = 'another status';
}
Если вам не нужна ветка else, просто удалите ее. Я предпочитаю предварительную инициализацию, поскольку она заставляет вас инициализировать переменную и предотвращает случаи, когда вы забываете инициализировать ее в одной из ветвей. Кроме того, он дает вам подсказку типа, когда вы вернетесь, чтобы прочитать функцию позже ...
И для такой простой ветки, как эта, можно использовать тернарный синтаксис. Если есть более сложная логика, я бы держался подальше:
$foo = $var ? 'bar' : '';
Мне нравится первое:
$foo = "";
if($var==TRUE){
$foo = "bar";
}
Поскольку оно ясно , кратко и легко читается.
Все это работает. Это предпочтение. Я бы сначала подумал об инициализации переменной, как в первом примере. Но для чего-то такого простого в моей книге подойдет третий вариант.
Кроме того, третий вариант не должен быть таким многословным, если $ var - это просто логическое значение:
$foo = $var ? "bar" : "";
Не имеет большого значения. Мне нравится первый, когда есть много elseif, чтобы вы знали, что переменная всегда инициализируется. Но на самом деле это вопрос предпочтений.
Как и кавычки, мне нравится использовать одиночные кавычки в php. Без уважительной причины :)
Я предпочитаю первый (за исключением избыточного теста для логического), потому что он работает согласованно для разных языков, особенно тех, которые требуют объявления переменной (и, возможно, ее типизации) перед ее установкой.
Java:
String foo = "";
if (var) {
foo = "Something";
}
JavaScript или JavaFX:
var foo = "";
if (var) {
foo = "Something";
}
и т. Д.
Можно использовать и третью форму, но если условие (или присваивание) сложное, оно будет немного менее читаемым.
Правильный ответ, как это часто бывает, «это зависит от обстоятельств». В этом случае
if ($var==TRUE) $foo = "bar";
else $foo = "";
очень ясно. Но каков ваш контекст?
В общем, третичный оператор, ваш третий вариант, следует использовать с особой осторожностью, так как его очень легко читать.
Но подумайте о том, что вы хотите, чтобы ваш код ЗНАЧИЛ, а не о том, что он ДЕЛАЕТ. Вы хотите установить для $ foo "нормальное" значение, а затем переопределить его? Или вы хотите установить что-то, что зависит от того, что такое $ var?
Что-то, что я считаю полезным изменить, это не совсем то, о чем вы спрашиваете, но это похоже, это из
function func() {
...
if ($condition) {
do plenty
of things
}
else {
do plenty
of things
}
}
Это, я обычно хотелось бы изменить на:
function func() {
...
if ($condition) {
do plenty
of things
return;
}
do plenty
of things
}
Обычно имеет смысл .
Просто спросите себя: «Если бы тот, кто ничего не знал о моем коде, прочитал его, имел бы смысл для него? Или для нее?»