Created
December 2, 2011 18:00
-
-
Save bastman/1424196 to your computer and use it in GitHub Desktop.
Lib_Utils_Array_List_Values
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Created by JetBrains PhpStorm. | |
* User: seb | |
* Date: 02.11.11 | |
* Time: 09:55 | |
* To change this template use File | Settings | File Templates. | |
*/ | |
class Lib_Utils_Array_List_Values | |
{ | |
/** | |
* unique=true: [1,2,3,4] + [3,4,5,6,7] = [1,2,3,4,5,6,7] | |
* @static | |
* @throws Exception | |
* @param $array1 | |
* @param $array2 | |
* @param $unique | |
* @return array | |
*/ | |
public static function append($array, $valuesList, $unique) | |
{ | |
if (!is_bool($unique)) { | |
throw new Exception("Invalid parameter 'unique' at ".__METHOD__); | |
} | |
$array1 = $array; | |
$array2 = $valuesList; | |
if (!is_array($array1)) { | |
$array1 = array(); | |
} | |
if (!is_array($array2)) { | |
$array1 = array(); | |
} | |
$result = (array)$array1; | |
foreach($array2 as $key => $value) { | |
if ($unique===true) { | |
if (in_array($value, $array1, true)) { | |
//drop value | |
continue; | |
} | |
} | |
// use value | |
$result[] = $value; | |
} | |
return $result; | |
} | |
/** | |
* [1,2,3,4] - [3,4,5,6,7] = [1,2] | |
* @static | |
* @param $array1 | |
* @param $array2 | |
* @return array | |
*/ | |
public static function remove($array, $valuesList, $unique) | |
{ | |
if (!is_bool($unique)) { | |
throw new Exception("Invalid parameter 'unique' at ".__METHOD__); | |
} | |
$result = array(); | |
$array1 = $array; | |
$array2 = $valuesList; | |
if (!is_array($array1)) { | |
$array1 = array(); | |
} | |
if (!is_array($array2)) { | |
$array1 = array(); | |
} | |
// [1,2,3,4] - [3,4,5,6,7] = [1,2] | |
foreach($array1 as $key => $value) { | |
if (in_array($value, $array2, true)) { | |
//drop value | |
continue; | |
} | |
if ($unique===true) { | |
if (in_array($value, $result, true)) { | |
//drop value | |
continue; | |
} | |
} | |
// use value | |
$result[] = $value; | |
} | |
return $result; | |
} | |
/** | |
* | |
* find all values from array2 that are not in array1 | |
* [1,2,3] -vs- [3,4,5] = [4,5] | |
* @static | |
* @throws Exception | |
* @param $array1 | |
* @param $array2 | |
* @param $unique | |
* @return array | |
*/ | |
public static function whatsMissing($array, $searchForValuesList, $unique) | |
{ | |
if (!is_bool($unique)) { | |
throw new Exception("Invalid parameter 'unique' at ".__METHOD__); | |
} | |
$result = array(); | |
if (!is_array($array)) { | |
$array = array(); | |
} | |
if (!is_array($searchForValuesList)) { | |
$searchForValuesList = array(); | |
} | |
foreach($searchForValuesList as $value) { | |
if(!in_array($value, $array, true)) { | |
if ($unique===true) { | |
if (!in_array($value, $result, true)) { | |
$result[] = $value; | |
} | |
} else { | |
$result[] = $value; | |
} | |
} | |
} | |
if ($unique===true) { | |
$result=(array)array_unique($result); | |
} | |
return $result; | |
} | |
/** | |
* e.g. returns the first 100 ($count) values of a given list | |
* @static | |
* @throws Exception | |
* @param $array | |
* @param int $count | |
* @param bool $unique | |
* @return array | |
*/ | |
public static function collectSome($array, $count, $unique) | |
{ | |
if (!is_bool($unique)) { | |
throw new Exception("Invalid parameter 'unique' at ".__METHOD__); | |
} | |
$result = array(); | |
if (!is_array($array)) { | |
$array = array(); | |
} | |
if (!is_int($count)) { | |
return $result; | |
} | |
if ($count<1) { | |
return $result; | |
} | |
$cnt = 0; | |
foreach($array as $key => $value) { | |
if ($cnt >= $count) { | |
break; | |
} | |
if ($unique===true) { | |
if (in_array($value, $result, true)) { | |
// drop value | |
continue; | |
} | |
} | |
$result[] = $value; | |
$cnt ++; | |
} | |
return $result; | |
} | |
/** | |
* @static | |
* @param array|null $array | |
* @param int $count | |
* @param mixed $padValue | |
* @return array | |
*/ | |
public static function pad($array, $count, $padValue) | |
{ | |
if (!is_array($array)) { | |
$array = array(); | |
} | |
$result = $array; | |
if (!is_int($count)) { | |
return $result; | |
} | |
$result = array_pad($array, $count, $padValue); | |
return $result; | |
} | |
/** | |
* @static | |
* @param array|niúll|mixed $array | |
* @return array | |
*/ | |
public static function ensureList($array) | |
{ | |
$result = array(); | |
if (!is_array($array)) { | |
return $result; | |
} | |
foreach($array as $value) { | |
$result[] = $value; | |
} | |
return $result; | |
} | |
/** | |
* @static | |
* @param int $minValue | |
* @param int $maxValue | |
* @param int|null $stepSize | |
* @return array | |
*/ | |
public static function range($minValue, $maxValue, $stepSize) | |
{ | |
$result = (array)range($minValue, $maxValue, $stepSize); | |
return $result; | |
} | |
/** | |
* @static | |
* @param array $array | |
* @param int $maxTimes | |
* @return array | |
*/ | |
public static function shuffle($array, $maxTimes) | |
{ | |
$result = array(); | |
if (!is_array($array)) { | |
return $result; | |
} | |
if (count($array)<1) { | |
return $result; | |
} | |
$maxTimes = (int)$maxTimes; | |
if ($maxTimes<0) { | |
return $array; | |
} | |
if ($maxTimes>255) { | |
$maxTimes = 255; | |
} | |
$list = array(); | |
foreach($array as $item) { | |
$list[] = $item; | |
} | |
$shuffleTimes = rand(1, $maxTimes); | |
for ($i=0; $i<$shuffleTimes; $i++) { | |
shuffle($list); | |
} | |
$result = $list; | |
return (array)$result; | |
} | |
/** | |
* @static | |
* @throws Exception | |
* @param $array | |
* @param $valuesList | |
* @return array | |
*/ | |
public static function keep($array, $valuesList, $unique) | |
{ | |
if(!is_bool($unique)) { | |
throw new Exception("Invalid parameter 'unique' at ".__METHOD__); | |
} | |
$result = array(); | |
if($valuesList === null) { | |
$valuesList = array(); | |
} | |
if (!is_array($valuesList)) { | |
throw new Exception("Invalid parameter valuesList at ".__METHOD__); | |
} | |
foreach($array as $value) { | |
if (in_array($value, $valuesList, true)) { | |
if ($unique === true) { | |
if(!in_array($value, $result, true)) { | |
$result[] = $value; | |
} | |
} else { | |
$result[] = $value; | |
} | |
} | |
} | |
return $result; | |
} | |
/** | |
* @static | |
* @throws Exception | |
* @param array|null $array | |
* @return string | |
*/ | |
public static function checksum($array) | |
{ | |
$json = json_encode($array); | |
if (!is_string($json)) { | |
throw new Exception("Error while serialize to json at ".__METHOD__); | |
} | |
$checksum = md5($json); | |
return $checksum; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment