PHP-Fusion
v.7.01
AP-Fusion
v7.02.05
Pimped-Fusion-AP
v0.09.03
April 25 2024 16:37:08
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

lom
06/04/2018 14:03
Мы рады, ждем девятку. Очень хочется пощупать

Alipapa
27/03/2018 22:16
Всем привет, все неисправности устранили, всё у нас работает

mukaton
30/10/2015 02:37
Не получается ничего скачать. Ошибка Not Found

Alipapa
06/10/2015 23:00
9-я версия php-fusion на подходе, следите за новостями

Alipapa
10/11/2014 11:24
Заметь, я дважды ответил через 3 минуты после вопроса, могли бы уже решить

Последние статьи
· О стабилизаторах нап...
· СМС и Вебмани
· TinyMCE для пользова...
· PCRE (Perl Compatibl...
· PCRE (Perl Compatibl...
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
PHP-Fusion 7 Bogatyr - бесп...
Моды, плагины
7143 1 Vveb--ws
08-10-2018 16:47
Php-Fusion v9. Первые впеча...
Вопросы по работе
4514 3 Vveb--ws
25-07-2018 13:46
Появился хэлп по PHP-Fusion...
Вопросы по работе
6744 7 Vveb--ws
25-07-2018 13:42
prestashop&ap-fusion
Вопросы по работе
17364 61 Alipapa
26-08-2014 10:29
Плагин магазина Ap-Shop
Моды, плагины
14605 70 Alipapa
18-08-2014 18:14
TinyMCE
Вопросы по работе
21118 55 Alipapa
27-07-2013 21:57
HTML-5
Моды, плагины
5435 1 Alipapa
15-06-2013 19:47
Мультиязычность в Pimped-Fu...
Ошибки, баги, глюки
6266 4 Papich
16-04-2013 12:39
Pimped-Fusion. Первые впеча...
Ошибки, баги, глюки
21720 127 Alipapa
18-12-2012 10:59
Ищу мод для расстановки код...
Моды, плагины
15014 55 Alipapa
17-09-2012 14:00
Как присоединить файл к лич...
Моды, плагины
8263 3 lom
27-05-2012 18:12
Что мне не нравится в после...
Вопросы по работе
6851 4 Alipapa
27-05-2012 18:08
Проблемы с добавлением кате...
Вопросы по работе
7748 5 Alipapa
27-05-2012 18:06

create_function

(PHP 4 >= 4.0.1, PHP 5)

create_function -- Создаёт анонимную (lambda-style) функцию

Описание

string create_function ( string args, string code )

Создаёт анонимную функцию из переданных параметров и возвращает её уникальное имя. Обычно args передаются строкой в апострофах, что также рекомендуется для параметра code. Основанием для использования строк в апострофах является защита имён переменных от обработки, другими словами, если вы будете использовать кавычки, вам будет нужно экранировать все имена переменных вот так: \$avar.

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

Пример 1. Создание анонимной функции с помощью create_function()

<?php
$newfunc
= create_function ( '$a,$b' , 'return "ln($a) + ln($b) = " . log($a * $b);' );
echo
"New anonymous function: $newfunc \n " ;
echo
$newfunc ( 2 , M_E ) . "\n" ;
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
?>

Или, возможно, чтобы иметь общий обработчик для применения набора функций к списку параметров:

Пример 2. Создание функции-обработчика с помощью create_function()

<?php
function process ( $var1 , $var2 , $farr )
{
    for (
$f = 0 ; $f < count ( $farr ); $f ++) {
        echo
$farr [ $f ]( $var1 , $var2 ) . "\n" ;
    }
}

// create a bunch of math functions
$f1 = 'if ($a >=0) {return "b*a^2 = ".$b*sqrt($a);} else {return false;}' ;
$f2 = "return \"min(b^2+a, a^2,b) = \".min(\$a*\$a+\$b,\$b*\$b+\$a);" ;
$f3 = 'if ($a > 0 && $b != 0) {return "ln(a)/b = ".log($a)/$b; } else { return false; }' ;
$farr = array(
    
create_function ( '$x,$y' , 'return "some trig: ".(sin($x) + $x*cos($y));' ),
    
create_function ( '$x,$y' , 'return "a hypotenuse: ".sqrt($x*$x + $y*$y);' ),
    
create_function ( '$a,$b' , $f1 ),
    
create_function ( '$a,$b' , $f2 ),
    
create_function ( '$a,$b' , $f3 )
    );

echo
"\nUsing the first array of anonymous functions\n" ;
echo
"parameters: 2.3445, M_PI\n" ;
process ( 2.3445 , M_PI , $farr );

// now make a bunch of string processing functions
$garr = array(
    
create_function ( '$b,$a' , 'if (strncmp($a, $b, 3) == 0) return "** \"$a\" ' .
    
'and \"$b\"\n** Look the same to me! (looking at the first 3 chars)";' ),
    
create_function ( '$a,$b' , '; return "CRCs: " . crc32($a) . " , ".crc32(b);' ),
    
create_function ( '$a,$b' , '; return "similar(a,b) = " . similar_text($a, $b, &$p) . "($p%)";' )
    );
echo
"\nUsing the second array of anonymous functions\n" ;
process ( "Twas brilling and the slithy toves" , "Twas the night" , $garr );
?>

Вышеприведённый код выводит следующее:

Using the first array of anonymous functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a/b) = 0.27122299212594

Using the second array of anonymous functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: -725381282 , 1908338681
similar(a,b) = 11(45.833333333333%)

Однако, вероятно, наиболее обоснованное использование lambda-style (анонимных) функций - это создание функций-обработчиков, например, при использовании array_walk() или usort()

Пример 3. Использование анонимной функции как функции-обработчика

<?php
$av
= array( "the " , "a " , "that " , "this " );
array_walk ( $av , create_function ( '&$v,$k' , '$v = $v . "mango";' ));
print_r ( $av );
?>

выводит:

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)

Сортировка строк по их длине

<?php

$sv
= array( "small" , "larger" , "a big string" , "it is a string thing" );
print_r ( $sv );

?>

результат:

Array
(
  [0] => small
  [1] => larger
  [2] => a big string
  [3] => it is a string thing
)

Теперь отсортируем их в обратном порядке:

<?php

usort
( $sv , create_function ( '$a,$b' , 'return strlen($b) - strlen($a);' ));
print_r ( $sv );

?>

результат:

Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)

Все функции PHP:
Навигация
· Новости
· Статьи
· Скачать
· Форум
· Ссылки
· Категории новостей
· Обратная связь
· Галерея
· Поиск
· CMS AP-Fusion. Отличия от PHP-Fusion
· Javascript справочник
· Техника
Сейчас на сайте
· Гостей: 3

· Пользователей: 0

· Всего пользователей: 453
· Новый пользователь: ZDA
Информеры
Загрузка файлов  +  -
9,947,977 уникальных посетителей Iceberg by Harly