Доброго времени суток, уважаемые форумчане! можно ли заменить isset на empty пример Код (PHP): public function RikkiTxt($RIA) { [b]if (!empty($RIA['simple'])) {[/b] echo "<input type='text' id='id".$RIA['inputName']."' name='".$RIA['inputName']."' class='".$RIA['inputClass']."' value='".(!empty($RIA['value']) ? $RIA['value'] : "")."' ".(!empty($RIA['maxlength']) ? "maxlength='".$RIA['maxlength']."'" : "")." ".(!empty($RIA['placeholder']) ? "placeholder='".$RIA['placeholder']."'" : "")." ".(!empty($RIA['js']) ? $RIA['js'] : "")." ".(!empty($RIA['readonly']) ? "readonly" : "").">".PHP_EOL; [b]} elseif (!empty($RIA['simpleInGr'])) {[/b] echo "<div id='idDi".$RIA['inputName']."' class='input-group'>".PHP_EOL; echo "<span class='input-group-addon'>".(!empty($RIA['spanTitle']) ? $RIA['spanTitle'] : "")."</span>".PHP_EOL; echo "<input type='text' id='id".$RIA['inputName']."' name='".$RIA['inputName']."' class='".$RIA['inputClass']."' value='".(!empty($RIA['value']) ? $RIA['value'] : "")."' ".(!empty($RIA['maxlength']) ? "maxlength='".$RIA['maxlength']."'" : "")." ".(!empty($RIA['placeholder']) ? "placeholder='".$RIA['placeholder']."'" : "")." ".(!empty($RIA['js']) ? $RIA['js'] : "")." ".(!empty($RIA['readonly']) ? "readonly" : "").">".PHP_EOL; echo "</div>".PHP_EOL; [b]} elseif (!empty($RIA['countInGr'])) {[/b] echo "<div id='idDi".$RIA['inputName']."' class='input-group'>".PHP_EOL; echo "<span class='input-group-addon'>".(!empty($RIA['spanTitle']) ? $RIA['spanTitle'] : "")."<span id='idSp".$RIA['inputName']."' class='".$RIA['countSpanClass']."'>".($RIA['maxlength']-2)."</span></span>".PHP_EOL; echo "<input type='text' id='id".$RIA['inputName']."' name='".$RIA['inputName']."' class='".$RIA['inputClass']."' value='".(!empty($RIA['value']) ? $RIA['value'] : "")."' ".(!empty($RIA['maxlength']) ? "maxlength='".$RIA['maxlength']."'" : "")." ".(!empty($RIA['placeholder']) ? "placeholder='".$RIA['placeholder']."'" : "")." ".(!empty($RIA['js']) ? $RIA['js'] : "")." ".(!empty($RIA['readonly']) ? "readonly" : "").">".PHP_EOL; echo "</div>".PHP_EOL; [b] } [/b] } код на странице отображения $wcSSum = array( [b]'simpleInGr' => 1,[/b] 'inputName' => 'wcSSum', 'spanTitle' => '', 'inputClass' => 'form-control text-center', 'value' => '888', 'maxlength' => 5, 'placeholder' => '', 'js' => '', 'readonly' => '' ); echo $RikkiInput->RikkiInput($wcSSum); ошибки по поводу неизвестной переменной не выдает
Забавный вопрос. Это звучит как "Можно ли заменить яблоко грушей". isset() - проверяет существует ли переменная http://php.net/manual/ru/function.isset empty() - проверяет не пустая ли переменная http://php.net/manual/ru/function.empty
Если empty проверяет переменную которая не объявлена она ошибки не выдает, и на выходе верный результат, вот и задаю вопрос, можно ли в данном случае ограничиться одной empty или все таки связка isset+empty, где то слышала что zend усовершенствовал empty, но это только слухи
а вот нельзя проверять не объявленную переменную Код (PHP): if(isset($varable){ if(empty($varable){ //это значит переменная пуста }else{ //это значит переменная не пуста }else{ //переменной не существует } Добавлено спустя 31 секунду: Добавлено спустя 22 секунды: я ссылки прикрепил чтобы вы почитали про эти функции. Добавлено спустя 1 минуту 12 секунд: Если переменная не существует, предупреждение не генерируется. Это значит, что empty() фактически является точным эквивалентом конструкции !isset($var) || $var == false
спасибо, я информацию по вашим ссылкам, уже раз 30 прочитала те переменная, в случае проверки empty, хотя бы просто так $var; но должна существовать, а совсем пустое место нет? правильно ? А что страшного в том что empty встретит необъявленную переменную?
тогда используйте их в паре, чтобы точно знать, объявлена переменная или же нет. Добавлено спустя 1 минуту 12 секунд: она учитывает, но там переменная или false или же ее нет. Короче, точно мы знаем что из двух.
))) судя по логике если переменная есть, то рассматривается следующее условие если она = false, то есть если переменной нет то функция может ее обработать без тяжелых последствий и ошибок? это же не !isset($var) && $var == false простите за глупость конечно а это где в мануале прописано? или это не точный эквивалент который нам чего-то не договаривает, откуда он вообще в мануалах взялся? для красоты слова?
Код (PHP): $a = ""; if(empty($a){ //переменная пустая }else{ //переменная не пустая } тут сработает первое условие, потому что переменная пустая. Код (PHP): if(empty($b){ //переменная не объявлена или равна false }else{ //переменная не пустая } тут тоже сработает первое условие, но тут потому что переменная не объявлена
ну если точно надо знать объявлена была ли переменная или нет, то в связке с Isset иначе можно его так юзать. Короче когда как
mahmuzar, Вы не совсем правы isset вернёт FALSE, если переменная не объявлена или равна NULL. empty это просто эквивалент "!isset($var) or $var == false". Код (PHP): $varIS = null; $varEmpty = ''; var_dump(isset($var), isset($varIS), empty($var), empty($varIS), empty($varEmpty));
спасибо, все таки там где нужна скорость обработки лучше оставить isset (проверка форм и тд), а при формировании html кода со стороны сервера можно ограничиться empty?
Не так. Используйте empty() там, где нужна проверка, что переменная существует и она не пустая. isset() там, где требуется проверка, что переменная существует и не равна null. А скоростя нужны только в длительных циклах, в остальных случаях не заморачивайтесь сильно, пока не припрёт. п.с. Кстати, если нужна проверка именно на объявление переменной, то почитайте про get_defined_vars() - может помочь.
там изменения в скорости незначительны думаю из-за этого не стоит что-либо менять. Так абсолютно с вами согласен. Вроде по isset другого не писал.
В коде ТС, empty() даже логичнее, чем иссет. Раз на то пошло, то для проверки существования ключей в массиве есть отдельная функция.
спасибо, буду использовать связку i+e, в моем случае, я немного не правильно сформулировала вопрос, надобыло можно ли из связки isset + empty удалить isset.... ну да ладно Добавлено спустя 1 минуту 56 секунд: [vs], и чтобы значения при этом были не пустые? в итоге код такой получился: public function RikkiTxt($RIA) { if (isset($RIA['pTxt']) && !empty($RIA['pTxt'])) echo "<p".(isset($RIA['pClass']) && !empty($RIA['pClass']) ? " class='".$RIA['pClass']."'" : "").">".$RIA['pTxt']."</p>".PHP_EOL; if (isset($RIA['simpleInGr'])) { echo "<div id='idDi".$RIA['inputName']."' class='input-group'>".PHP_EOL; echo "<span class='input-group-addon'>".(isset($RIA['spanTitle']) && !empty($RIA['spanTitle']) ? $RIA['spanTitle'] : "")."</span>".PHP_EOL; } elseif (isset($RIA['countInGr'])) { echo "<div id='idDi".$RIA['inputName']."' class='input-group'>".PHP_EOL; echo "<span class='input-group-addon'>".(isset($RIA['spanTitle']) && !empty($RIA['spanTitle']) ? $RIA['spanTitle'] : "")."<span id='idSp".$RIA['inputName']."' class='".$RIA['countSpanClass']."'>".($RIA['maxlength']-2)."</span></span>".PHP_EOL; } echo "<input type='text' id='id".$RIA['inputName']."' name='".$RIA['inputName']."' class='".$RIA['inputClass']."' value='".(isset($RIA['value']) ? $RIA['value'] : "")."'".(isset($RIA['maxlength']) && !empty($RIA['maxlength']) ? " maxlength='".$RIA['maxlength']."'" : "").(isset($RIA['placeholder']) && !empty($RIA['placeholder']) ? " placeholder='".$RIA['placeholder']."'" : "").(isset($RIA['js']) && !empty($RIA['js']) ? " ".$RIA['js'] : "").(isset($RIA['readonly']) && !empty($RIA['readonly']) ? " readonly" : "").">".PHP_EOL; if (isset($RIA['simpleInGr']) || isset($RIA['countInGr'])) echo "</div>".PHP_EOL; } если бы конечно убрать isset то смотрелось бы получше( девушка, (если вы девушка) вам самой нравится видеть эту кучу вместо кода?! дувушки обычно склонны к порядку и чистоте. — модераторъ
а что предлагаете? если isset выкинуть нельзя мне нужно проверять на пустоту, так как на страницах отображения я использую весь массив для скорости составления, чтобы не вспоминать как там каждый ключ называется $RIA_on_id3 = array( 'simpleInGr' => '1', 'pTxt' => '', 'pClass' => '', 'inputName' => 'on_id3', 'spanTitle' => $locale['a5'], 'inputClass' => 'form-control text-center', 'value' => $value_on_id3, 'maxlength' => '5', 'placeholder' => '', 'js' => '', 'readonly' => '1' ); echo $RikkiInput->RikkiTxt($RIA_on_id3); память девичья) //Все так завернуто выражаются, как будто боятся что его советом воспользуются тысячи жаждущих истины пользователей И что спустя некоторое время разъяренная толпа будет разыскивать советчика чтобы посмотреть ему в глаза( если доверять интуиции и теории то isset в моем случае абсолютно лишняя, а как на практике...
будьте проще: выберите для себя любимый вариант и пользуйтесь им, т.к. в большинстве случаев разницы нет. а там, где разница есть — применяйте другой способ. главное чтобы вы помнили в чем разница. ваш капитан очевидность.
artoodetoo, в моем случае (формирование html кода со стороны сервера) isset+empty и просто empty разница есть или нет?