[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Флаги как аргумент для функции
cremnet
Нужно написать функцию которой бы передавалась переменная и флаги. Не пойму как работает система определения какие флаги были переданы функции.


define('FUN_FLAG_1',/* какое значение сюда указывать? в каком формате? */);
define('FUN_FLAG_2',/* какое значение сюда указывать? в каком формате? */);
define('FUN_FLAG_3',/* какое значение сюда указывать? в каком формате? */);

custom_function(123,FUN_FLAG_1|FUN_FLAG_3);

function custom_function($value,$flags=false){

/*
Нужно распознать переданные флаги сдесь
*/

if($flag1){
// ...
}
if($flag2){
// ...
}
if($flag3){
// ...
}
return false;
}


если можно по подробнее для чайника



Спустя 1 час, 30 минут, 45 секунд (15.03.2011 - 23:42) Trianon написал(а):
define('FUN_FLAG_1',1<<1);
define('FUN_FLAG_2',1<<2);
define('FUN_FLAG_3',1<<3);
//больше 30 делать не советую

if($flags & FUN_FLAG_1){
// ...
}
if($flags & FUN_FLAG_2){
// ...
}
if($flags & FUN_FLAG_3){
// ...
}

Спустя 10 часов, 26 минут, 33 секунды (16.03.2011 - 10:09) linker написал(а):
define('FUN_FLAG_1',1<<1);
define('FUN_FLAG_2',1<<2);
define('FUN_FLAG_3',1<<3);
заменить на более понятное
define('FUN_FLAG_1', 2);
define('FUN_FLAG_2', 4);
define('FUN_FLAG_3', 8);

Спустя 1 час, 18 минут, 54 секунды (16.03.2011 - 11:28) Michael написал(а):
Так:
define('FUN_FLAG_1', bindec('0001'));
define('FUN_FLAG_2', bindec('0010'));
define('FUN_FLAG_3', bindec('0100'));
define('FUN_FLAG_4', bindec('1000'));

по моему тоже весьма наглядно. :)

Спустя 2 часа, 5 минут, 57 секунд (16.03.2011 - 13:34) linker написал(а):
Michael
А смысл?

Спустя 21 минута, 16 секунд (16.03.2011 - 13:55) mansoff написал(а):
а не проще массив передать а потом в теле функции забацать foreach?

Спустя 44 минуты, 1 секунда (16.03.2011 - 14:39) Michael написал(а):
Цитата (linker @ 16.03.2011 - 12:34)
Michael
А смысл?

дать пользователю данного скрипта понимание, что представляют собой данные флаги: в данном случае - непересекающиеся выставленные биты двоичного числа. Потому что на этом основана дальнейшая работа(как с двоичными числами):
if ($flags & FUN_FLAG_1 & FUN_FLAG_3) ...



Спустя 32 минуты, 26 секунд (16.03.2011 - 15:12) linker написал(а):
Michael
Ты думаешь ТС знает что-либо о двоичной системе и ему нули и единицы покажутся более понятными нежели: 2, 4, 8?

ТС не обижайся, я просто образно.

Спустя 18 минут, 55 секунд (16.03.2011 - 15:30) Trianon написал(а):
Цитата
Ты думаешь ТС знает что-либо о двоичной системе и ему нули и единицы покажутся более понятными нежели: 2, 4, 8?



Именно из этих соображений 1<<n представляется мне более уместным в данном контексте.



Спустя 1 минута, 48 секунд (16.03.2011 - 15:32) Michael написал(а):
linker, я говорю не конкретно о текущем ТС, а вообще обо всех кому посчастливится работать с данным скриптом/сайтом. Вот открыл я например новый мне скрипт(задание такое) и изучаю задумку автора. Чем понятнее - тем лучше.

Спустя 22 часа, 21 минута, 21 секунда (17.03.2011 - 13:54) cremnet написал(а):
Очень занятно и понятно ))) всем спс
Trianon
как не странно ваш ответ был более понятный и простой в дальнейшем использовании
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.