Pull to refresh

играем с логическими операторами

Reading time2 min
Views444
вот захотелось поиграться с логическими операторами, с присваиванием и сделать что-то реально полезное…


родилась у меня идейка сделать функцию, в которую можно передавать параметры по схеме:
либо строку, либо пару ключ/значение или просто массив с парой значений…

код в цвете
dumpz.org/2626

… написал, понял что ни разу не прав и сделал без извращений… теперь в функцию можно передавать просто либо 1, либо 2 параметра вот и все…
потратил я на это 10 минут, больно захотелось поиграться с логическими операторами… может кому интересно в какой НЕ читаемый код это может вылиться… уверен, что если сидеть пол часа, то туда можно накрутить практически любой сложности монстров…
function choise($index){
	$types=array("model", "brand");
	if (
		!((count($index)==2 and in_array($type=$index[0], $types) and ($id=is_int($index[1])?$index[1]:0 and !$keyword=false or $keyword=$index[1] and !$id=false))
		or (count($index)==1 and in_array($type=key($index), $types) and (($id=is_int(current($index))?current($index):0 and !$keyword=false) or ($keyword=current($index) and !$id=false)))
		or ($type=false or $id=false or $keyword=false))
	){
		echo 'incorrect format'."\n";
		return;
	}
	
	echo '$type=';
	var_dump($type);
	echo '$keyword=';
	var_dump($keyword);
	echo '$id=';
	var_dump($id);
	echo '-------------'."\n";
}

choise(array('model'=>5));
choise(array('model', 5));
choise(array('model', 'bmw'));
choise(array('model'=>'bmw'));
choise(array('m'=>'bmw'));
choise(array('m', 'bmw'));
choise(array('model', 'bmw', 5));



только этих монстров никому не понять будет…
приведены они здесь чтоб каждый мог посмотреть насколько неприятными они могут стать со стороны и перед тем как писать задумался. делюсь экспой — ловите халява.
Tags:
Hubs:
Total votes 15: ↑7 and ↓8-1
Comments6

Articles