Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: "Оптимизировать" условие
 
 автор: sl1p   (05.06.2010 в 22:43)   письмо автору
 
 

Я либо уже сильно туплю либо условие так и должно быть

<?
if((($_POST['alias_type'] != && $a != 0) || ($_POST['alias_type'] == && $a == 0)) && $alias === "")


может его можно както покороче написать?)

  Ответить  
 
 автор: ddhvvn   (05.06.2010 в 22:46)   письмо автору
 
   для: sl1p   (05.06.2010 в 22:43)
 

http://php.net/variant_xor may be?

  Ответить  
 
 автор: Лена   (05.06.2010 в 23:01)   письмо автору
 
   для: sl1p   (05.06.2010 в 22:43)
 

($_POST['alias_type'] != 0 && $a != 0) || ($_POST['alias_type'] == 0 && $a == 0) - здесь вы ставите условие выбрать ненулевые значения ИЛИ нулевые - если будет найдено ненулевое значение - оно будет выбрано, если нулевое- тоже будет выбрано. Непонятное какое-то условие...

$alias === "" - непонятно, зачем проверять по типу.

  Ответить  
 
 автор: sl1p   (05.06.2010 в 23:18)   письмо автору
 
   для: Лена   (05.06.2010 в 23:01)
 

это условие в цикле, например

foreach(array(0,1,2) as $a) {

}

$_POST['alias_type'] это радио кнопка.
тобишь $a == 0 будет всегда, но не всегда будет $_POST['alias_type'] == 0, вот

$alias === "" - непонятно, зачем проверять по типу.
я так всегда проверяю действительно ли пуста строка.
например если я не знаю какой тип будет в переменной (int) или (string)
я делаю так:
if(strval($str) === "")
правильно ли это?

  Ответить  
 
 автор: Лена   (05.06.2010 в 23:34)   письмо автору
 
   для: sl1p   (05.06.2010 в 23:18)
 

>
foreach(array(0,1,2) as $a) {

}

$_POST['alias_type'] это радио кнопка.
тобишь $a == 0 будет всегда, но не всегда будет $_POST['alias_type'] == 0, вот

Еще раз не поняла :)
Я вам показала, что вы ставите в условии ,как бы так сказать, два взаимоисключающих сравнения, которые в конечном счете приводят к тому, что нам становится все равно, было ли это условие или нет.
Как это $a == 0, если у вас массив array(0,1,2)? Откуда берется foreach(array(0,1,2) as $a) {


>правильно ли это?
gettype() посмотрите.

  Ответить  
 
 автор: sl1p   (06.06.2010 в 01:17)   письмо автору
 
   для: Лена   (05.06.2010 в 23:34)
 

Откуда берется foreach(array(0,1,2) as $a) {
ну это не важно :)
вобщем я сам запутался и получилось проехать это условие.

gettype() посмотрите.
причём здесь эта функция если я просто проверяю что строка не пустая, не должна проходить именно пустая строка :)
т.е. если сравнивать $alias == "" тогда 0, например пройдет :)

  Ответить  
 
 автор: Tonik992   (06.06.2010 в 03:54)   письмо автору
 
   для: sl1p   (06.06.2010 в 01:17)
 

($_POST['alias_type'] != 0 && $a != 0) || ($_POST['alias_type'] == 0 && $a == 0)


по правилу логике, это выражение вернет true, если $_POST['alias_type'] и $a - различны (одно - истина, второе ложно)
можно заменить как говорили:
$_POST['alias_type'] XOR $a


в итоге получится:

($_POST['alias_type'] XOR $a)&& $alias === ""

  Ответить  
 
 автор: neadekvat   (06.06.2010 в 12:00)   письмо автору
 
   для: Tonik992   (06.06.2010 в 03:54)
 

Не могли бы вы разжевать?

Вот смотрю я по скобкам
($_POST['alias_type'] != 0 && $a != 0)
||
($_POST['alias_type'] == 0 && $a == 0)

и у меня складывается такая картина.

Чтобы выражение в целом дало true, то одна из скобок должна дать true. А для этого $_POST['alias_type'] и $a должны представлять из себя одновременно либо истину, либо ложь. Однако чтобы работал ваш код, $_POST['alias_type'] и $a должны одновременно представлять из себя и истину, и ложь.

  Ответить  
 
 автор: sim5   (07.06.2010 в 07:51)   письмо автору
 
   для: Tonik992   (06.06.2010 в 03:54)
 

А = ИСТИНА и А = ЛОЖЬ, это отрицание суждения. Нужно проверять не состояния каждого из аргументов, а их равенство:

if($_POST['alias_type'] == $a && $alias === "")


или в вашем случае

if(!($_POST['alias_type'] XOR $a) ...)

  Ответить  
 
 автор: Trianon   (06.06.2010 в 11:46)   письмо автору
 
   для: sl1p   (05.06.2010 в 22:43)
 

if(((!$_POST['alias_type']) == (!$a))  && $alias === "")

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования