PHP-Fusion
v.7.01
AP-Fusion
v7.01
Pimped-Fusion
v0.08.01
Сентября 07 2010 23:03:17
Навигация
· Новости
· Статьи
· Скачать
· Форум
· Ссылки
· Категории новостей
· Обратная связь
· Галерея
· Поиск
· Гостевая
· Коллекция аватар
· CMS AP-Fusion. Отличия от PHP-Fusion
· Javascript справочник
· Разное
Сейчас на сайте
· Гостей: 3

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

· Всего пользователей: 413
· Новый пользователь: Ruslik
Информеры
Загрузка файлов  +  -
Бытовая техника:  +  
Лента alipapa.ru
ROOKEE - инструмент оптимизатора.
Строим рейтинг-каталог
Смайлики прошлого века
Шаблоны для blog-fusion


Подъем почтового сервера на VdsPlanet.
Хостинг на VdsPlanet - месяц спустя.

Хостинг на VdsPlanet.
Где взять ТИЦ?
Апдейт Google Pagerank 4 апреля
Google Supplemental Index Ratio

И опять АП
АП ТИЦ - как всегда, неожиданно.
Заработай своим умом

Комплексная автоматизация предприятий возрождается
Модели поискового поведения и взаимодействия в Web

АП ПР

Geo-IP + Google Maps - по-моему, симпатично.
Теперь Снежинск.
Зачем Яндексу нужен АГС?
Работают ли ссылки?
Ссылки  +  -
Блоги
Alipapa
» Блог Алипапы
lom
» Блог Лома

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:
Авторизация
Логин

Пароль



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

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

04/09/2010 22:25
Ладно проехали

21/08/2010 15:58
Взял бы да молча исправил, особое разрешение нужно? Кстати, не так там просто было, но я справился.

11/08/2010 17:24
Так как насчет глюки в каталоге, там делов-то, давай я сам исправлю?

06/07/2010 15:55
А может быть "гандидат"?

16/06/2010 13:55
правильно говорить так "кандибрат в депугады"

15/06/2010 22:18
Vveb--ws прочитал личку, спасибо. Я дальтоник немного, мне пофигу, Grin Исправлю.

27/05/2010 17:31
Ну вот, с престой немного продвинулись, лед тронулся.

18/05/2010 23:27
Привет.

16/05/2010 17:06
Привет Алипапа, я тут глюку нашел в каталоге, щяс на форуме напишу.

08/05/2010 22:38
Скорее жив, а вам бан большой и толстый

08/05/2010 13:08
А [*****]почему[****
*] тут так[****] мало пишут?[*****] Сайт мертв? Smile

06/05/2010 16:03
Во, еще один кандидат в депутаты вылупился

05/05/2010 16:33
С * наступающим * праздником * победы * !!!

27/04/2010 10:55
это поначалу не получается, на самом деле там все просто

27/04/2010 00:11
что-то у меня не получаетси Wink

27/04/2010 00:09
а как темы то писать?

20/04/2010 15:57
Флудить разрешается, а вот спамить - не получится.

20/04/2010 15:37
В чат[****] флудить [****]разрешается[
****]или [****]нет [****]? Smile

08/04/2010 22:36
Ага. Уже первую тему написал.

25/03/2010 18:02
Уже видел. На форуме там разделы придумай--будем писать

Анонс
Последние статьи
· СМС и Вебмани
· TinyMCE для пользова...
· PCRE (Perl Compatibl...
· PCRE (Perl Compatibl...
· 510
1,948,190 уникальных посетителей Iceberg by Harly