[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Функция в качестве аргумента функции.
LRCenter
Допустим пишу функцию вида:


function CycleGenValue($val){
Что нибудь делаем в цикле с использованием $val.
}




Как можно в качестве аргумента $val, передавать функцию? Именно ссылаться на функцию, а не на ее разовое значение.

Если вызываю так, то он только генерирует один раз и использует сгенерированное значение для всего цикла.

CycleGenValue(XFunction($par1, $par2));


Как бы сделать так чтобы функция вызывалась каждый обход цикла заново?

_____________
Меньше кода - меньше багов ©
Snus
LRCenter
function CycleGenValue($par1, $par2){
for($i = 0; $i < 10; $i++){
echo XFunction($par1, $par2).'<br>';
}
}


CycleGenValue('val1', 'val2');

LRCenter
Snus
Вы как всегда зрите в корень smile.gif

Я спрашивал о принципе, а не о конкретной задаче, меня интересует как мне написать такую функцию в которую пользователь сможет передавать в качестве параметра имя другой произвольной функции для вызова, и желательно с параметрами.

_____________
Меньше кода - меньше багов ©
sergeiss
Я уже в сотый (или в тысячный?) раз повторю: скачай хэлп по ПХП, ссылка у меня в подписи!!!!!!!!!!!!!!!!!!! ;
А когда скачаешь, то почитай там про variable functions. Это то, что тебе нужно.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
alex12060
sergeiss

Кстати, твой хелп по ЖС не актуален уже)
Почему? Зайди туда)
LRCenter
sergeiss
Я смотрел это, там нет ничего похожего!
http://www.php.net/manual/en/functions.var...e-functions.php

_____________
Меньше кода - меньше багов ©
LRCenter
Блин, я наверное не очень понятно объяснил, попробую еще.
В php есть функции, например usort, которые в качестве аргумента могут принимать пользовательскую функцию и использовать ее для рабты внутри себя.

Могу я написать подобную функцию?

_____________
Меньше кода - меньше багов ©
linker
function f(){ return 'hello' }

function a($v)
{
return $v() . ' world';
}

echo a('f');
Для PHP 5.3.x
$a = function () { return 'hello'; };

function b($f)
{
return $f() . 'world';
}

echo b($a);
Дальше думай

_____________
Gear Framework
Gear Framework на Github
LRCenter
linker
Вот то что я хотел увидеть! Все оказывается так просто. Я уже отчаялся просто.
Спасибо, linker!

_____________
Меньше кода - меньше багов ©
LRCenter
А вот как бы еще в нее параметры передать?

_____________
Меньше кода - меньше багов ©
Snus
function f($p){ return $p; }

function a($v, $p){
return $v($p) . ' world';
}

echo a('f', 'hello');


Такое извращенство это :) пиши классы.
LRCenter
Snus
Мда, сложновато получается. Спасибо.

_____________
Меньше кода - меньше багов ©
Гость_gRey
Знаю, что довольно поздно, но просто оставлю это здесь.

$a = function ($b)
{
return $b;
};

function z($funct)
{
$arr=array('world','php','all');
array_walk($arr,function($item) use ($funct){
echo $funct.' '.$item."\n";
});
}

$arr=array('hello','hi','Здравствуйте');

array_walk($arr,function($item) use ($a){
z($a($item)); // Вот тут использование функции в функции с параметром
});



Вывод будет:


hello world
hello php
hello all
hi world
hi php
hi all
Здравствуйте world
Здравствуйте php
Здравствуйте all
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.