$value){ if($key != 0) { unset($data[$key]); $data[$key - 1] = $value; }else unset($data[$key]); } for($i=0; $i<=$count-1; $i++){ if(empty($data[$i])){ $data[$i] = 0 ; }else $data[$i] *= 1 ; } ksort($data); return $data; } function fillCount($count = 1){ $array = []; for($i=0; $i<=$count-1; $i++){ $array[$i] = $i+1; } return $array; } function countDayInMonth($dataProvider){ return cal_days_in_month( CAL_GREGORIAN, isset(explode('.', $dataProvider->month)[1]) ? explode('.', $dataProvider->month)[1] : 1, isset(explode('.', $dataProvider->month)[0]) ? explode('.', $dataProvider->month)[0] : 1 ); } /* @return \app\models\user*/ function user() { return Yii::$app->user; } /* @return \app\models\User*/ function identity($autorenew = false) { return Yii::$app->user->getIdentity($autorenew); } function getValue($data, $name, $default = null) { return \yii\helpers\ArrayHelper::getValue($data, $name, $default); } /** * Возвращает сумму прописью * @author mxuser * @uses morph(...) * @param float|int $num * @return string */ function num2str($num) { $nul = 'ноль'; $ten = array( array('', 'одна', 'дві', 'три', 'чотири', 'п\'ять', 'шість', 'сім', 'вісім', 'дев\'ять'), array('', 'одна', 'дві', 'три', 'чотири', 'п\'ять', 'шість', 'сім', 'вісім', 'дев\'ять'), ); $a20 = array('десять', 'одинадцять', 'дванадцать', 'тринадцять', 'чотирнадцять', 'п\'ятнадцять', 'шістнадцять', 'сімнадцять', 'вісімнадцять', 'дев\'ятнадцять'); $tens = array(2 => 'двадцять', 'тридцять', 'сорок', 'п\'ятьдесят', 'шістьдесят', 'сімдесят', 'вісімдесят', 'дев\'яносто'); $hundred = array('', 'сто', 'двісті', 'триста', 'чотириста', 'п\'ятьсот', 'шістьсот', 'сімсот', 'вісімсот', 'дев\'ятьсот'); $unit = array( // Units array('цент', 'цента', 'центів', 1), array('долар', 'долари', 'доларів', 0), array('тисяча', 'тисячі', 'тисяч', 1), array('мільйон', 'мільйони', 'мільйонів', 0), array('мільярд', 'мільярди', 'мільярдів', 0), ); // list($rub, $kop) = explode('.', sprintf("%015.2f", floatval($num))); $out = array(); if (intval($rub) > 0) { foreach (str_split($rub, 3) as $uk => $v) { // by 3 symbols if (!intval($v)) continue; $uk = sizeof($unit) - $uk - 1; // unit key $gender = $unit[$uk][3]; list($i1, $i2, $i3) = array_map('intval', str_split($v, 1)); // mega-logic $out[] = $hundred[$i1]; # 1xx-9xx if ($i2 > 1) $out[] = $tens[$i2] . ' ' . $ten[$gender][$i3]; # 20-99 else $out[] = $i2 > 0 ? $a20[$i3] : $ten[$gender][$i3]; # 10-19 | 1-9 // units without rub & kop if ($uk > 1) $out[] = morph($v, $unit[$uk][0], $unit[$uk][1], $unit[$uk][2]); } //foreach } else $out[] = $nul; $out[] = morph(intval($rub), $unit[1][0], $unit[1][1], $unit[1][2]); // rub $out[] = $kop . ' ' . morph($kop, $unit[0][0], $unit[0][1], $unit[0][2]); // kop return trim(preg_replace('/ {2,}/', ' ', join(' ', $out))); } function morph($n, $f1, $f2, $f5) { $n = abs(intval($n)) % 100; if ($n > 10 && $n < 20) return $f5; $n = $n % 10; if ($n > 1 && $n < 5) return $f2; if ($n == 1) return $f1; return $f5; } function app() { return \Yii::$app; } /* @return \app\components\Templater */ function templater() { return app()->templater; } function DMF($val = ''){ var_dump($val); die(); }