전투태세, 첩보 추가, 기존 코드 일부 정리

This commit is contained in:
2018-10-20 16:45:57 +09:00
parent aecbf8ccb3
commit aa19ae129b
18 changed files with 476 additions and 216 deletions
+34 -2
View File
@@ -263,8 +263,8 @@ class Util extends \utilphp\util
public static function mapWithKey($callback, $dict)
{
$result = [];
foreach (array_keys($dict) as $key) {
$result[$key] = ($callback)($key, $dict[$key]);
foreach ($dict as $key=>$value) {
$result[$key] = ($callback)($key, $value);
}
return $result;
}
@@ -509,6 +509,38 @@ class Util extends \utilphp\util
return $sum;
}
/**
* 특정 키를 가진 값으로 묶음
*
* @param array $array 배열. 1차원 배열 또는 2차원 배열
* @param int|string|null $key 2차원 배열에서 참조할 키.
* @return int|float 합계
*/
public static function arrayGroupBy(array $array, $key, bool $preserveRowKey=false) {
$result = array();
if($preserveRowKey){
foreach($array as $rowKey=>$val) {
if(key_exists($key, $val)){
$result[$val[$key]][$rowKey] = $val;
}else{
$result[""][$rowKey] = $val;
}
}
}
else{
foreach($array as $val) {
if(key_exists($key, $val)){
$result[$val[$key]][] = $val;
}else{
$result[""][] = $val;
}
}
}
return $result;
}
/**
* 배열의 아무거나 고름. Python의 random.choice()
*