✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Написання циклів у PHP: два способи; Однакові речі

15

Коли ви працюєте з колекцією в PHP, особливо з масивами в PHP, є два способи, якими ви в першу чергу бачите маніпуляції інформацією:

  1. через for петлі,
  2. за допомогою різноманітних array функцій, які надає PHP.

На мою думку, ці array функції забезпечують кращу читабельність, але було показано, що вони працюють повільніше (особливо з великими даними – з меншими даними це, природно, буде незначним).

Я часто працюю з forциклами та пов’язаними функціями, щоб досягти того самого, але я подумав, що, можливо, варто поглянути на приклад із попередньої публікації та те, як я використовував arrayфункції для досягнення тих же речей, що й for цикл.

Зрештою, це порівняльний пост, але я думаю, що добре бачити, як той самий код можна написати різними способами.

Написання циклів у PHP

З самого початку я не стверджую, що краще. Це просто для того, щоб показати, як писати цикли в PHP можна досягти різними способами.

Від вас залежить, як ви хочете це реалізувати.

Мета цього прикладу — показати:

  • як отримати теги для даної публікації,
  • читання їхніх імен є масивом, розділеним вертикальною рискою,
  • повертає імена тегів, розділені вертикальною рискою, у форматі рядка.

І ось два способи зробити це.

Використання стандартної петлі

Використання стандартного for циклу може виглядати приблизно так:

<?php

// Setup the array to store the tag names.
$tagNames = [];

// Iterate through all of the tags.
$tags = get_the_tags();
for ($i = 0; $i < count($tags); $i++) {
  $currentTag = $tags[$i];

  // Only add names that have not been added.
  if (!in_array($currentTag->name, $tagNames)) {
      $tagNames[] = $currentTag->name;
  }
}

// Break the names of the the tags into a '|' delimited string.
$tagNameString = implode('|', $tagNames);

// Clean up the string so any trailing pipes are removed.
$tagNameString = rtrim($tagNameString, '|');

Зверніть увагу, що я:

  1. ініціалізувати рядок,
  2. читайте теги
  3. переглядати їх і додавати, лише якщо вони ще не існують,
  4. розділіть масив за допомогою труби,
  5. видаліть будь-які відстаючі труби

Тоді я маю рядок, який можу повернути.

Використання функцій масиву

У цьому прикладі я роблю те саме, але код трохи компактніший:

<?php

// Seperate each indidivudal entry by a '|'
implode(
  '|',
  // Remove any duplicates in the array.
  array_filter(
    /* iterate through the list of tags and add the names to an 
     * array that's returned to filter.
     */
    array_map(function ($tag) {
      return $tag->name;
    }, get_the_tags())) );

Корисно читати код від внутрішньої функції до зовнішньої. З цим відбувається ось що:

  1. Я беру теги, переглядаючи кожен із них за допомогою анонімної функції, переданої в array_map,
  2. Потім я використовую повернутий масив і передаю його, array_filter щоб дублікати було видалено,
  3. Потім я перетворюю масив на рядок, розділений вертикальною рискою.

Як і вище, у мене є рядок, який я можу повернути.

Це воно?

Так – і все. Я не кажу, що читабельність другої функції краща, але я скажу, що вона вимагає менше кроків.

Також пам’ятайте, що більші набори даних можуть працювати не так добре.

Незважаючи на це, використання вбудованих функцій масиву справді приємне, оскільки воно забезпечує рівень вбудованої функціональності, рідної для PHP (тоді як for цикли є більш поширеними в усіх мовах), що може заощадити наш час (наприклад, фільтрування дублікатів даних).

Є посилання?

Насправді, так. Окрім посібника з PHP, я вважаю, що Карл Александер має, мабуть, найвичерпнішу статтю на цю тему.

Написання циклів у PHP: два способи; Однакові речі

Варто витраченого часу, щоб прочитати його повністю, особливо якщо ця конкретна публікація була для вас цікавою.

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі