Доброго времени суток форумчани. Столкнулся с проблемой, помогите пожалуйста решить.
Вот код:
$action = null; //Тип данных по умолчанию
$type = null; //Тип данных по умолчанию
$variation = null; //Тип данных по умолчанию
$action = '$action'; //Тип данных: string, int или null
$type = '$type'; //Тип данных: string, int или null
$variation = 0; //Тип данных: string, int или null
if ($action)
$action = "action:" . $action;
if ($type and $action)
$type = "|type:" . $type;
elseif ($type)
$type = "type:" . $type;
if ($variation and ($type or $action))
$variation = "|variation:" . $variation;
elseif ($variation)
$variation = "variation:" . $variation;
Вывод: action:$action|type:$type0
Тут теряется слово |variation. Но если $variation равен null или любому значению отличительному от 0, то все Ок.
Пробовал в такой вариации:
if ($variation and ($type or $action))
$variation = "|variation:" . $variation;
elseif ($variation)
$variation = "variation:" . $variation;
elseif ($variation == 0)
if (($type or $action))
$variation = "|variation:" . $variation;
else
$variation = "variation:" . $variation;
Тут же другая проблема, если $action и $type не равны null, а $variation равен ему то: action:$action|type:$type|variation:. Отображается |variation:, но не должен.
Помогите решить проблему. Какое условие необходимо поставить что бы:
- Что бы указании всех трёх переменных было так
action:$action|type:$type|variation:$variation(даже если одно из них принимает значения 0) - При отсутствии одной из трёх сохранялась концепция, например:
action:$action|variation:$variation,action:$actionи т.д.
UPD. Проблема именно с логическими выражениями. У меня не получается правильно задать последнее из-за 0, if воспринимает его как bool(false) при выполнении. Но если я меняю условие в if, то он перестает реагировать на другой текст или ведет себя не корректно при отсутствии какого-то значения в $variation.
UPD2. Почему $value_2 не подходит по условию? Была мысль что переменная принимает тип boolean, но при выводе через var_dump его тип int. Вопрос, почему так?
if ($value_1)
var_dump($value_1); //string(11) "Hello World"
if ($value_2)
var_dump($value_2); //Не подходит по условию...
else
var_dump($value_2); //int(0)
if ($value_3)
var_dump($value_3); //int(1)
if ($value_4)
var_dump($value_4); //int(2)