php array bitwise

大城市里の小女人 提交于 2019-12-07 01:47:17

问题


if I have an array of flags and I want to combine them with a bitwise conjunction

ie:

$foo = array(flag1, flag2);

into

$bar = flag1 | flag2;

Does PHP have any good functions that will do this nicely for me already?


回答1:


The array_reduce will reduce an array to a single value for you:

$res = array_reduce($array, function($a, $b) { return $a | $b; }, 0);

Reduce is also sometimes called fold (fold left or fold right) in other languages.




回答2:


You could do it like so

$bar = $foo[0] | $foo[1]

If the size of your array is unknown you could use array_reduce like this

// in php > 5.3
$values = array_reduce($flagArray, function($a, $b) { return $a | $b; });
// in php <= 5.2
$values = array_reduce($flagArray, create_function('$a, $b', 'return $a | $b'));



回答3:


$values = array_reduce($foo,function($a,$b){return is_null($a) ? $b : $a | $b;});

PHP < 5.3 (no closures), either of these two:

function _mybitor($a,$b){return is_null($a) ? $b : $a | $b;}
$values = array_reduce($foo,'_mybitor');

or

$values = array_reduce($foo,create_function('$a,$b','return is_null($a) ? $b : $a | $b;'));

);




回答4:


A simple suggestion to the accepted answer: create a sibling to array_sum.

function array_or (array $array): int {
    return array_reduce($array, function($a, $b) { return $a | $b; }, 0);
  }


来源:https://stackoverflow.com/questions/3325638/php-array-bitwise

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!