<MyRusakov.ru />

Программирование на C++ с Нуля до Гуру

Программирование на C++ с Нуля до Гуру

Данный курс научит Вас программировать на языке C++, который, несмотря на свой почтенный возраст, необычайно сильно востребован. Курс состоит из 6 разделов, посмотрев которые и выполнив все упражнения, Вы с нуля освоите этот язык и сможете создавать самые разные проекты любой сложности на C++.

Дополнительно к курсу идёт вспомогательная система, которая не даст Вам забросить начатое на полпути.

Также к курсу идёт Бонус "Программирование на C++ в Unreal Engine", в котором Вы научитесь создавать игры на C++ с использованием этого движка.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Зачем Вы изучаете программирование/создание сайтов?

Создание динамической функции на PHP

Создание динамической функции на PHP

Одной из весьма интересных возможностей PHP является создание функций прямо при выполнении PHP-кода. Давайте разберём, как создаются динамические функции в PHP, на примерах.

Занимается этим функция create_function(), которая принимает параметры функции и её тело.

<?php
  $sqr = create_function('$x', 'return $x * $x;');
  echo $sqr(3); // Выведется 9
?>

Всё достаточно прозрачно, однако, обратите внимание, что и аргументы функции, и тело функции необходимо писать в одинарных кавычках. Либо если нужно подставлять в тело значения некоторых переменных, то использовать двойные, но экранировать там, где подстановка значения не нужна.

Применяется функция create_function() редко, единственное разумное применение, которое приходит на ум - это использование её при пользовательской сортировке:

<?php
  $array = array("php", "functions", "create", "mysql"); // Создаём массив
  usort($array, create_function('$x, $y', 'return strlen($x)-strlen($y);')); // Сортируем строки по длине
  print_r($array); // Выводим массив
?>

Такая запись значительно короче, чем если бы мы отдельно создавали функцию сортировки. Однако, функция create_function() работает очень медленно. Если бы мы при сортировке создали отдельную функцию заранее, то данный скрипт работал бы в 2.5 раза быстрее. Поэтому если нет необходимости создавать динамические функции в PHP, то не делайте этого.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (5):

sync.o sync.o 24.10.2012 11:39:49

В случае сортировки сработает и безымянная функция: usort($array, function($x, $y) {return strlen($x)-strlen($y)})

Ответить

mischa.samolkaev mischa.samolkaev 03.11.2012 16:43:52

Не лучше ли сделать так usort($array,function($x,$y ){return strlen($x)-strlen($y)});

Ответить

Admin Admin 03.11.2012 16:50:52

Можно и так, но create_function() можно поместить в переменную, а затем при многократной сортировке достаточно будет подставлять эту переменную, не придётся каждый раз определять функцию сортировки заново.

Ответить

mischa.samolkaev mischa.samolkaev 03.11.2012 17:00:38

тогда так $func=function($x,$y ){return strlen($x)-strlen($y)}; usort($array,$func);

Ответить

Admin Admin 03.11.2012 17:25:59

Это уже не генерация функций, а её прямое создание. Поскольку тело функции уже не строка, которую можно легко менять значениями переменных (пришедших, например, от пользователя), а самый обычный PHP-код. Если именно генерировать функции при сортировке, то можно попросить пользователя написать в форме некое правило сортировки, а затем легко это правило воплотить в жизнь, сгенерировав функцию. И в данном случае без create_function() уже не обойтись.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.