2007. 06. 13, szerda keltezéssel 14.13-kor Richard Davey ezt írta: > Hi all, > > Can anyone think of a more elegant way of achieving the following? > > <?php > $flags = array(); > > if ($allow_fraction) > { > $flags[] = FILTER_FLAG_ALLOW_FRACTION; > } > > if ($allow_thousand) > { > $flags[] = FILTER_FLAG_ALLOW_THOUSAND; > } > > if ($allow_scientific) > { > $flags[] = FILTER_FLAG_ALLOW_SCIENTIFIC; > } > > if (count($flags) > 0) > { $tmp = FALSE; foreach ($flags as $flag) { $tmp = $tmp | $flag; } $filter['flags'] = $tmp; greets Zoltán Németh > $c = '$c = ' . implode('|', $flags) . ';'; > eval($c); > $filter['flags'] = $c; > } > ?> > > The code checks for 3 booleans ($allow_fraction, etc) and if true it > adds the const to the $flags array. At the end each value in the array > is joined together into a string (the implode part), which would give > something like: 4096|8192 - but I then need to return the actual value > from this operation, so I'm eval'ing it. > > I don't like using eval, so can anyone think of a better way to do > this? All I need as an end result if the product of the bitwise > operation (i.e. an integer) stored in $filter['flags'] > > Cheers, > > Rich > -- > Zend Certified Engineer > http://www.corephp.co.uk > > "Never trust a computer you can't throw out of a window" > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php