PHP 最佳方法系列今天的主题:PHP 中的循环。如何编写高质量的 PHP 循环? PHP 中的循环编码有哪些技巧?让我们一起来了解一下吧。

什么是 PHP 循环?

PHP 循环经常用于操作数据集和重复代码块。然而,循环的低效使用会显着影响脚本的性能。在本文中,我们将分享有关 PHP 中循环的高性能和有效使用的最佳实践和示例。

PHP 循环示例

如果您不熟悉 PHP 循环,首先: PHP 课程 您应该查看我们为您准备的有关我们系列中的周期的示例。

选择正确的循环类型

需要选择适合PHP语言执行操作的循环。 For 或 Foreach 循环并不适合所有操作!现在让我们通过正确和错误用法的示例来理解这一点。

PHP For 循环

PHP for 循环是数字迭代的正确选择。

正确使用:非常适合迭代次数预先确定的情况。

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

误用:迭代数组或不迭代次数 for 使用周期。

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

PHP Foreach 循环

PHP foreach 该循环非常适合迭代数组。

正确使用:自动迭代数组的每个元素。

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

误用: foreach 当使用非数组数据结构或需要基于索引的迭代时。

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

PHP While 循环

PHP while PHP 中某些情况下的循环 for 和 foreach 根据周期,它可能更合适。最重要的细节是循环的继续条件可能在循环内发生变化的场景。

正确使用:非常适合需要在循环内检查条件的情况。

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

误用:循环条件永不改变的情况

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

有效使用 PHP 循环和性能

永远不要在循环中调用函数

在循环中重复调用相同的函数会对性能产生负面影响,尤其是在处理大型数据集时。切勿在循环中调用函数。这会让你的代码变得有味道

了解气味代码和干净代码的含义和区别 干净的代码 您可以阅读我们的文章

误用

count() 像循环一样调用函数。

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

正确使用

在循环外调用函数以避免不必要的重新计算。

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

这种做法 count() 它可以防止函数在每次迭代时重新执行,从而使循环更加高效。

不要在循环中使用查询和繁重的操作

在 PHP 中,尤其是在处理大型数据集时,在循环中使用可能导致性能问题的查询和操作会导致严重的性能问题和过多的资源消耗。

误用

在此示例中,数据库查询在 foreach 循环中使用。每次迭代时都会为每个用户运行单独的查询,从而导致严重的性能问题。

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

正确使用

在此示例中,通过优化的 SQL 查询在循环外部接收所有必要的数据,并在循环内处理接收到的数据。该循环仅对从数据库检索的数据进行操作,从而最大限度地减少每次迭代中进行的查询数量。

$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 循环

PHP 循环的性能和有效使用可提高代码效率、优化资源使用并防止潜在的性能问题。选择正确的循环类型、提高循环效率以及关注资源管理是帮助您在使用 PHP 循环时获得更好结果的关键方法。通过应用这些方法,您可以使代码更快、更简洁、更易读。