$recentChannel = null;
foreach ($xml->channel->item as $channel) {
if (!$recentChannel || strtotime($channel->pubDate) > strtotime($recentChannel->pubDate)) {
$recentChannel = $channel;
}
}
// теперь $recentChannel содержит канал с самой свежей датой
$str = "0"; // непустая строка, содержащая цифру ноль
if (!$str) echo "bool false\n"; // сработает
if (empty($str)) echo "is empty\n"; // сработает
$str = null; // не строка
if ($str == "") echo "equals empty str\n"; // сработает
if (strlen($str) === 0) echo "zero length str\n"; // сработает
===
с пустой строкой. return
. Она только печатает значения.function func_a()
{
return 5;
}
$result = func_a();
$result === 5; // true
function func_b()
{
return [1, 2, 3, 4, 5];
}
$result_array = func_b();
/**
* Collect array of prime numbers up to provided top limit
* @param int $top limit
* @return array
*/
function primes(int $top = 100):array
{
if ($top <= 1) return [];
$result = [2];
for ($i = 3; $i <= $top; $i += 2) {
for ($j = 3; $j < $i / 2; $j += 2) {
if ($i % $j === 0) continue 2;
}
array_push($result, $i);
}
return $result;
}
primes(55) // [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53]
hello.html.twig
:Привет, {{ name }}!
,echo $twig->render('hello.html.twig', ['name' => 'Хабр']);
передаются имя темплейта и данные, которые там нужно подставить.echo preg_replace('#Вода#', '', $something, 1);
// ,Огонь,Вода,Вода,Трава,Небо
Четвёртый параметр – лимит числа замен. Максимум одна замена. $input = [
["id" => "3", "name" => "Алёна", "rating" => "2159", ],
["id" => "199978927", "name" => "Wandermensil", "rating" => "6593", ],
["id" => "199983283", "name" => "Mirfshir", "rating" => "6320", ],
];
usort($input, fn($a, $b) => $b["rating"] - $a["rating"]);
/*
array(3) {
[0]=> array(3) { ["id"]=> string(9) "199978927" ["name"]=> string(12) "Wandermensil" ["rating"]=> string(4) "6593" }
[1]=> array(3) { ["id"]=> string(9) "199983283" ["name"]=> string(8) "Mirfshir" ["rating"]=> string(4) "6320" }
[2]=> array(3) { ["id"]=> string(1) "3" ["name"]=> string(10) "Алёна" ["rating"]=> string(4) "2159" }
}
*/
$length = 10;
array_map(fn() => new Apple(), array_fill(0, $length, NULL));
function makeMany(string $className, int $quantity)
{
return array_map(fn() => new $className(), array_fill(0, $quantity, NULL));
}
// использование
makeMany("Apple", 10);
makeMany("Orange", 20);
// или
makeMany(Apple::class, 10);
makeMany(Orange::class, 20);
php app.php
и процессы висят, работают. <?php
function run($timerid, $params) {
var_dump($timerid);
var_dump($params);
}
// Каждые 10 секунд выполнять функцию run
Swoole\Timer::tick(10000, "run", ["param1", "param2"]);
// Enable the hook for MySQL: PDO/MySQLi
Co::set(['hook_flags' => SWOOLE_HOOK_TCP]);
// Setup a coroutine context
Co\run(function() {
// Execute a query inside a coroutine
go(function () {
// Already setup the $pdo connection before...
$statement = $pdo->prepare("SELECT * FROM users LIMIT :limit, :offset");
$statement->execute(['limit' => $limit, 'offset' => $offset]);
$data = $statement->fetchAll();
// Process $data result...
});
});
сразу несколько фотографийИз этого массива отобрать все, где
type: "photo"
— это фотографии. $sql = <<<EOFSQL
SELECT IF (b.price IS NOT NULL, a.price - b.price, '') AS result
FROM ${DB_PREFIX}product AS a
LEFT JOIN
${DB_PREFIX}product_special AS b
ON a.product_id = b.product_id
WHERE a.product_id = ?
EOFSQL;
$stmt = $this->pdo->prepare($sql);
$stmt->execute([$row]);
$result = $stmt->fetchColumn();