$content
записано имя свойства. См. variable variables.class X {
private $a = "A";
private $b = "B";
public function test($content) {
echo $this->$content . PHP_EOL;
}
}
$x = new X();
$x->test("a"); // A
$x->test("b"); // B
$sum = array_sum($a);
$rnd = rand() / getrandmax(); // от 0 до 1
$runningSum = 0;
foreach($a as $k => $v) {
$runningSum += $v / $sum;
if ($runningSum >= $rnd) {
$key = $k;
break;
}
}
if (!$key) $key = $k;
echo "Выпало: " . $key . PHP_EOL;
function appendValue($key, $value) {
$filepath = "./config.txt"; // путь к файлу
if (!file_exists($filepath)) throw "File not found";
$divider = PHP_EOL; // разделитель строк
$rows = explode($divider, file_get_contents($filepath));
$tmpfname = tempnam(sys_get_temp_dir(), 'Toster');
$fh = fopen($tmpfname, 'w');
$replaced = 0;
foreach($rows as $row) {
$data = explode(':', $row);
if (0 === count($data)) continue;
if ($data[0] == $key) {
array_push($data, $value);
$row = implode(':', $data);
$replaced++;
}
fputs($fh, $row . $divider);
}
fclose($fh);
// поменять файлы местами
unlink($filepath);
rename($tmpfname, $filepath);
return $replaced; // кол-во обновлённых строк. Вдруг, неуникален индекс?
}
appendValue(2, 33);
strtotime('monday this week');
(только на англ.)$rusdate='ПТ 18:00';
list($dow, $hours, $minutes) = sscanf($rusdate, "%s %d:%d");
$rusweek = explode(',','ВС,ПН,ВТ,СР,ЧТ,ПТ,СБ');
$ndow = array_search($dow, $rusweek);
date_default_timezone_set('Europe/Moscow'); // если не настроен PHP
$time = strtotime('monday this week') + 86400 * $ndow + 3600 * $hours + 60 * $minutes;
echo date('Y-m-d H:i:s', $time);
// 2018-10-13 18:00:00
$a
и посмотреть ; )echo
вы напишете запятую, то назначение $b
выполнится только в случае истинности условия в if
:$a = false;
if ($a) echo "не пусто"; $b = 1; // назначение $b выполнится всегда
if ($a) echo "не пусто", $b = 1; // назначение $b выполнится только при истинности $a
// второй вариант плохой, не делайте так. Результат $b = 1 передается как аргумент в echo
// лучше использовать фигурные скобки:
if ($a) {
echo "не пусто";
$b = 10;
}
// в скобках лучше читается
json_decode()
, если json файл окажется слишком большим.function num($amount) {
return max( 100 * floor($amount / 100), 100);
}
for($i = 0; $i < 500; $i += rand(0,90)) {
printf("%3d -> %3d\n", $i, num($i));
}
0 -> 100
2 -> 100
57 -> 100
105 -> 100
118 -> 100
166 -> 100
249 -> 200
254 -> 200
295 -> 200
307 -> 300
315 -> 300
349 -> 300
403 -> 400
437 -> 400
480 -> 400
488 -> 400
attachment
в messages.send().ts
формат, который потом можно просто склеивать.# из mp4 сделать ts
TMPVIDEO="tmp_video.ts"
ffmpeg \
-i "short.mp4" \
-bsf:v h264_mp4toannexb \
-an \
-f mpegts \
-y -hide_banner \
"$TMPVIDEO"
# до этого определить, сколько раз повторить фрагмент,
# чтобы покрыть длину mp3
REPEATS=5
LONGVIDEO="long_video.ts"
N=1
while [ $N -le $REPEATS ]; do
ffmpeg -i "concat:$TMPVIDEO|$TMPVIDEO" \
-c:v copy \
-y -hide_banner \
"$LONGVIDEO"
local STATUS=$? ; if [ $STATUS -ne 0 ]; then return $STATUS; fi
rm -f "$TMPVIDEO"
mv "$LONGVIDEO" "$TMPVIDEO"
local N=$[$N << 1]
echo "N: $N"
done
# получили длинное видео с запасом
# подрезать длину, чтобы точно соответствовала
FFMPEG -i "$TMPVIDEO" \
-c:v copy \
-t $MUSIC_LENGTH \
-y -hide_banner \
"$LONGVIDEO"