<?php
class Record {
private $data = [];
private $currentIndex = 0;
public function addRecord($value) {
$this->data[] = $value;
}
public function getRecord() {
if ($this->currentIndex < count($this->data)) {
$record = $this->data[$this->currentIndex];
$this->currentIndex++;
return $record;
} else {
return null;
}
}
}
// Vytvoření instance třídy
$recordKeeper = new Record();
// Přidání záznamů
$recordKeeper->addRecord("John");
$recordKeeper->addRecord(30);
$recordKeeper->addRecord("New York");
// Získání a postupné procházení všech záznamů pomocí cyklu foreach a metody getRecord()
echo "All records:<br>";
while ($record = $recordKeeper->getRecord()) {
echo $record . "<br>";
}
<?php
function generatorFunction() {
yield 1;
yield 2;
yield 3;
}
// Použití generátoru
$generator = generatorFunction();
foreach ($generator as $value) {
echo $value . ' ';
}
// Výstup: 1 2 3
/* ----------------------------- */
names.txt
===
John Doe
Jane Smith
Bob Johnson
Alice Williams
... (a mnoho dalších jmen)
function readNamesFromFile($filename) {
$file = fopen($filename, 'r');
if (!$file) {
throw new Exception("Nepodařilo se otevřít soubor.");
}
while (($line = fgets($file)) !== false) {
yield trim($line);
}
fclose($file);
}
// Použití generátoru pro zpracování jmen ze souboru
$generator = readNamesFromFile('names.txt');
foreach ($generator as $name) {
// Provádění operace s každým jménem
echo "Hello, $name!" . PHP_EOL;
}
/* ----------------------------- */
function randomDataGenerator($count) {
for ($i = 0; $i < $count; $i++) {
yield rand(1, 100); // Generujeme náhodné číslo v rozmezí 1 až 100
}
}
// Generujeme 10 náhodných čísel
$generator = randomDataGenerator(10);
foreach ($generator as $number) {
// Provádění operace s každým náhodným číslem
echo $number . ' ';
}
/* ----------------------------- */
function searchValueInArray(array $array, $value) {
foreach ($array as $item) {
if (in_array($value, $item)) {
yield $item;
}
}
}
// Příklad použití:
$data = array(
array('id' => 1, 'name' => 'John'),
array('id' => 2, 'name' => 'Jane'),
array('id' => 3, 'name' => 'Bob'),
array('id' => 4, 'name' => 'Alice')
);
$searchValue = 'Bob';
foreach (searchValueInArray($data, $searchValue) as $result) {
echo "Hodnota nalezena: " . $result['name'] . "\n";
}
<?php
session_start();
// Interval v sekundách, po kterém se změní počet prohlížejících
$interval = 10; // Například každých 10 sekund
// Kontrola, zda již byl počet prohlížejících inicializován v session
if (!isset($_SESSION['prohlizeloLidi'])) {
// Pokud ne, vygenerujte falešný počet prohlížejících (např. 65)
$_SESSION['prohlizeloLidi'] = 65;
$_SESSION['lastUpdate'] = time(); // Poslední aktualizace na aktuální čas
}
// Získání počtu prohlížejících z session
$prohlizeloLidi = $_SESSION['prohlizeloLidi'];
// Získání času poslední aktualizace
$lastUpdate = $_SESSION['lastUpdate'];
// Aktuální čas
$currentTime = time();
// Počet sekund od poslední aktualizace
$secondsSinceLastUpdate = $currentTime - $lastUpdate;
// Změna počtu prohlížejících po uplynutí intervalu
if ($secondsSinceLastUpdate >= $interval) {
// Generování náhodného směru změny (-1 pro snížení, 1 pro zvýšení)
$changeDirection = rand(0, 1) === 0 ? -1 : 1;
// Generování náhodného počtu prohlížejících, který se přičte nebo odečte od aktuálního počtu
$changeAmount = rand(1, 5); // Například změna o 1 až 5 prohlížejících
// Nový počet prohlížejících
$prohlizeloLidi += $changeDirection * $changeAmount;
// Ošetření, aby počet neklesl pod nulu
if ($prohlizeloLidi < 0) {
$prohlizeloLidi = 0;
}
// Aktualizace posledního aktualizovaného času
$_SESSION['lastUpdate'] = $currentTime;
}
// Uložení nového počtu prohlížejících do session
$_SESSION['prohlizeloLidi'] = $prohlizeloLidi;
// Vypsání informace
echo "Toto zboží si právě prohlíží $prohlizeloLidi lidí.";
// Ukončení session
session_write_close();
?>
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$films = [
[
'id' => 1628,
'name' => 'Sám doma',
'url' => 'https://www.csfd.cz/film/1628-sam-doma/prehled/',
],
[
'id' => 1629,
'name' => 'Sám doma 2',
'url' => 'https://www.csfd.cz/film/1629-sam-doma-2-ztracen-v-new-yorku/prehled/',
]
];
echo json_encode($films);
<?php
// https://blog.martinhujer.cz/clever-way-to-sort-php-arrays-by-multiple-values/
// https://stackoverflow.com/questions/2699086/how-to-sort-a-multi-dimensional-array-by-value
// COMPLEX: https://stackoverflow.com/questions/17364127/how-can-i-sort-arrays-and-data-in-php
// https://stackoverflow.com/questions/44309585/properly-sorting-multidimensional-array-using-usort-and-spaceship-operator/44309755#44309755
// 1)
// order products by: price ASC, inStock DESC, isRecommended DESC, name ASC
usort($products, function (Product $a, Product $b): int {
return
($a->getPrice() <=> $b->getPrice()) * 1000 + // price ASC
($b->isInStock() <=> $a->isInStock()) * 100 + // inStock DESC
($b->isRecommended() <=> $a->isRecommended()) * 10 + // isRecommended DESC
($a->getName() <=> $b->getName()); // name ASC
});
// 2)
// order products by: price ASC, inStock DESC, isRecommended DESC, name ASC
usort($products, fn (Product $a, Product $b): int =>
($a->getPrice() <=> $b->getPrice()) * 1000 + // price ASC
($b->isInStock() <=> $a->isInStock()) * 100 + // inStock DESC
($b->isRecommended() <=> $a->isRecommended()) * 10 + // isRecommended DESC
($a->getName() <=> $b->getName()) // name ASC
);
// 3)
usort($products, fn (Product $a, Product $b): int =>
[$a->getPrice(), $b->isInStock(), $b->isRecommended(), $a->getName()]
<=>
[$b->getPrice(), $a->isInStock(), $a->isRecommended(), $b->getName()]
);
usort($myArray, function($a, $b) {
$retval = $a['order'] <=> $b['order'];
if ($retval == 0) {
$retval = $a['suborder'] <=> $b['suborder'];
if ($retval == 0) {
$retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
}
}
return $retval;
});
<?php
// https://stackoverflow.com/questions/173868/how-to-get-a-files-extension-in-php
$ext = end(explode('.', $filename));
$ext = substr(strrchr($filename, '.'), 1);
$ext = substr($filename, strrpos($filename, '.') + 1);
$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $filename);
$ext = strrchr($filename, '.');
$ext = pathinfo($filename, PATHINFO_EXTENSION)['extension'];
$ext = (new SplFileInfo($path))->getExtension();
$exts = split("[/\\.]", $filename);
$n = count($exts)-1;
$ext = $exts[$n];
<?php
$states = ['Přijatá', 'Nová', 'K zaplacení', 'Zaplaceno', 'Expedováno', 'Doručeno'];
$currentState = isset($_GET['state']) ? $_GET['state'] : 'K zaplacení';
$totalStates = count($states);
$currentIndex = array_search($currentState, $states);
$prev = null;
$next = null;
$prevAll = [];
$nextAll = [];
foreach ($states as $index => $state) {
if ($index < $currentIndex) {
$prev = $state;
$prevAll[] = $state;
}
if ($index > $currentIndex && $next === null) {
$next = $state;
}
if ($index > $currentIndex) {
$nextAll[] = $state;
}
}
$meta = [
'prev' => $prev, // predchozi stav vuci aktualnimu ...
'prevAll' => $prevAll, // vsechny predchozi vuci aktualnimu ...
'next' => $next, // nasledujici stav vuci aktualnimu
'nextAll' => $nextAll, // vsechny nasledujici po aktualnim
'currentStateNumber' => $currentIndex, // aktualni cislo stavu, K zaplaceni => 2, Doručeno => 6 atd.
'totalStates' => $totalStates, // celkovy pocet stavu, tj. 6
];
echo '<pre>';
print_r($meta);