Het onderwerp van vandaag in onze serie PHP-best-benaderingen: Loops in PHP. Hoe schrijf je een kwalitatieve PHP-loop? Wat zijn de trucjes van codeerlussen in PHP? Laten we het samen uitzoeken.

Wat is PHP-loop?

PHP-loops worden vaak gebruikt om datasets te bewerken en codeblokken te herhalen. Inefficiënt gebruik van lussen kan echter de prestaties van het script aanzienlijk beïnvloeden. In dit artikel delen we best practices en voorbeelden over het performante en effectieve gebruik van loops in PHP.

Voorbeelden van PHP-lussen

Als je niet bekend bent met PHP-loops, doe dan eerst het volgende: PHP-lessen Kijk eens naar de voorbeelden die wij voor u hebben voorbereid over cycli uit onze serie.

Kies het juiste lustype

Het is noodzakelijk om een lus te kiezen die geschikt is voor de uit te voeren bewerking in de PHP-taal. De For- of Foreach-lus is niet voor elke operatie geschikt! Laten we dit nu begrijpen met voorbeelden van correct en onjuist gebruik.

PHP voor lus

PHP for lus is de juiste keuze voor iteratie met getallen.

Correct gebruik: Ideaal voor situaties waarin het aantal iteraties vooraf is bepaald.

for ($i = 0; $i < 10; $i++) {
    echo "Number: " . $i . "<br>";
}

Misbruik: Om over een array te itereren of zonder een iteratienummer for gebruik cyclus.

for ($i = 0; $i < count($array); $i++) {
    // For döngüsü bunun için ideal bir çözüm değil. BUNU YAPMAYIN!
}

PHP Foreach-lus

PHP foreach De lus is ideaal voor het herhalen van arrays.

Correct gebruik: Herhaalt automatisch elk element van de array.

$colors = ["red", "green", "blue"];
foreach ($colors as $color) {
    echo "Color: " . $color . "<br>";
}

Misbruik: foreach Bij gebruik van een niet-array-datastructuur of wanneer op index gebaseerde iteratie vereist is.

foreach ($i = 0; $i < 10; $i++) {
    // Forach döngüsü bunun için ideal bir çözüm değil. BUNU YAPMAYIN!
}

PHP While-lus

PHP while lus in PHP in bepaalde gevallen for En foreach Afhankelijk van de cycli kan het geschikter zijn. Het belangrijkste detail zijn de scenario's waarin de voortzettingsconditie van de lus binnen de lus kan veranderen.

Correct gebruik: Ideaal voor situaties waarin de toestand binnen de lus moet worden gecontroleerd.

$i = 0;
while ($i < 10) {
    echo "Sayı: " . $i . "<br>";
    $i++;
}

Misbruik: Gevallen waarin de lusvoorwaarde nooit verandert

$counter = 0;
while ($counter < 10) {
    echo "Sayı: " . $counter . "<br>";
    // Sonsuz döngü (infinite loop) oluşacak. BUNU YAPMAYIN!
}

PHP-loops effectief en prestatiegericht gebruiken

Roep nooit een functie in een lus op

Het herhaaldelijk aanroepen van dezelfde functie binnen de lus kan de prestaties negatief beïnvloeden, vooral bij het werken met grote datasets. Roep nooit functies in lussen aan. Hierdoor gaat je code stinken

Om de betekenissen en verschillen tussen geurcode en schone code te leren schone code U kunt ons artikel lezen

Misbruik

count() Oproepen functioneert als in een lus.

for ($i = 0; $i < count($array); $i++) {
    // yapılacak işlemler
}

Correct gebruik

Roep functies buiten de lus op om onnodige herberekeningen te voorkomen.

$array_len = count($array);
for ($i = 0; $i < $array_len; $i++) {
    // yapılacak işlemler
}

Deze aanpak count() Het voorkomt dat de functie bij elke iteratie opnieuw wordt uitgevoerd, waardoor de lus efficiënter wordt.

Gebruik geen query's en zware bewerkingen in lussen

In PHP, vooral bij het werken met grote datasets, veroorzaakt het gebruik van queries en bewerkingen die prestatieproblemen in een lus kunnen veroorzaken, grote prestatieproblemen en overmatig gebruik van hulpbronnen.

Misbruik

In dit voorbeeld wordt de databasequery gebruikt in een foreach-lus. Bij elke iteratie wordt voor elke gebruiker een afzonderlijke query uitgevoerd, wat ernstige prestatieproblemen veroorzaakt.

foreach ($users as $user) {
    $userData = $database->query("SELECT * FROM user_data WHERE user_id = " . $user->id);
    // BUNU ASLA YAPMAYIN!
}

Correct gebruik

In dit voorbeeld worden alle benodigde gegevens buiten de lus ontvangen met een geoptimaliseerde SQL-query, en worden de ontvangen gegevens binnen de lus verwerkt. De lus werkt alleen op gegevens die uit de database zijn opgehaald, waardoor het aantal zoekopdrachten in elke iteratie wordt geminimaliseerd.

$userIds = array_map(function($user) { return $user->id; }, $users);
$userData = $database->query("SELECT * FROM user_data WHERE user_id IN (" . implode(',', $userIds) . ")");

foreach ($userData as $data) {
    // veritabanından alınan verileri işle
}

PHP-loops

Prestaties en effectief gebruik van PHP-loops verhogen de efficiëntie van de code, optimaliseren het gebruik van bronnen en voorkomen potentiële prestatieproblemen. Het kiezen van de juiste looptypes, het verhogen van de efficiëntie in loops en aandacht besteden aan resourcebeheer zijn belangrijke benaderingen die u zullen helpen betere resultaten te behalen bij het gebruik van PHP-loops. Door deze benaderingen toe te passen, kunt u uw codes sneller, schoner en leesbaarder maken.