MediaWiki
REL1_31

A collection of static methods to play with arrays. More...
Static Public Member Functions  
static  arrayDiffAssocRecursive ( $array1) 
Do array_diff_assoc() on multidimensional arrays. More...  
static  cartesianProduct (... $inputArrays) 
Make an array consisting of every combination of the elements of the input arrays. More...  
static  consistentHashSort (&$array, $key, $separator="\000") 
Sort the given array in a pseudorandom order which depends only on the given key and each element value in $array. More...  
static  findLowerBound ( $valueCallback, $valueCount, $comparisonCallback, $target) 
Do a binary search, and return the index of the largest item that sorts less than or equal to the target value. More...  
static  pickRandom ( $weights) 
Given an array of nonnormalised probabilities, this function will select an element and return the appropriate key. More...  
A collection of static methods to play with arrays.
Definition at line 28 of file ArrayUtils.php.

static 
Do array_diff_assoc() on multidimensional arrays.
Note: empty arrays are removed.
array  $array1  The array to compare from 
array  $array2,...  More arrays to compare against 
Definition at line 158 of file ArrayUtils.php.

static 
Make an array consisting of every combination of the elements of the input arrays.
Each element of the output array is an array with a number of elements equal to the number of input parameters.
In mathematical terms, this is an nary Cartesian product.
For example, ArrayUtils::cartesianProduct( [ 1, 2 ], [ 'a', 'b' ] ) produces [ [ 1, 'a' ], [ 1, 'b' ], [ 2, 'a' ], [ 2, 'b' ] ]
If any of the input arrays is empty, the result is the empty array []. This is in keeping with the mathematical definition.
If no parameters are given, the result is also the empty array.
The array keys are ignored. This implementation uses the internal pointers of the input arrays to keep track of the current position without referring to the keys.
array  ...$inputArrays 
Definition at line 212 of file ArrayUtils.php.

static 
Sort the given array in a pseudorandom order which depends only on the given key and each element value in $array.
This is typically used for load balancing between servers each with a local cache.
Keys are preserved. The input array is modified in place.
Note: Benchmarking on PHP 5.3 and 5.4 indicates that for small strings, md5() is only 10% slower than hash('joaat',...) etc., since the function call overhead dominates. So there's not much justification for breaking compatibility with installations compiled with ./configure –disablehash.
array  &$array  Array to sort 
string  $key  
string  $separator  A separator used to delimit the array elements and the key. This can be chosen to provide backwards compatibility with various consistent hash implementations that existed before this function was introduced. 
Definition at line 49 of file ArrayUtils.php.
References $hashes, as, and use.
Referenced by RedisBagOStuff\getConnection(), PoolCounterRedis\getConnection(), and SqlBagOStuff\getTableByKey().

static 
Do a binary search, and return the index of the largest item that sorts less than or equal to the target value.
callable  $valueCallback  A function to call to get the value with a given array index. 
int  $valueCount  The number of items accessible via $valueCallback, indexed from 0 to $valueCount  1 
callable  $comparisonCallback  A callback to compare two values, returning 1, 0 or 1 in the style of strcmp(). 
string  $target  The target value to find. 
Definition at line 112 of file ArrayUtils.php.
Referenced by IcuCollation\getFirstLetter(), and ArrayUtilsTest\testFindLowerBound().

static 
Given an array of nonnormalised probabilities, this function will select an element and return the appropriate key.
array  $weights 
Definition at line 66 of file ArrayUtils.php.
References as.
Referenced by JobQueueFederated\doPop(), Wikimedia\Rdbms\LoadBalancer\getRandomNonLagged(), Wikimedia\Rdbms\LoadBalancer\pickReaderIndex(), JobQueueFederated\tryJobInsertions(), and Wikimedia\Rdbms\LoadBalancer\waitForOne().