PHP kézikönyv Előző Következő Az átadott paraméterek alapján egy anonim - név nélküli függvényt hoz létre. Az args paramétert általában egyszeres idézőjelek közt szokás átadni, és ez ajánlott a code -ra is. Ennek az az oka, hogy az egyszeres idézőjelek közé fogott sztringekre nem aktiválódik a változó-behelyettesítés, máskülönben macskakörmök használata esetén a változó neveket visszaperjelezned kellene, mint például: \$avar. Ezzel a függvénnyel - például futási időben nyert információk alapján - definiálhatsz új függvényeket: Példa 1. A create_function() segítségével definiált függvények $ujfgv = create_function( '$a,$b' ,'return "ln($a) + ln($b) = ".log($a * $b) ;'); echo "Új névtelen függvényünk: $ujfgv\n"; / / azért valami neve csak van:) echo $ujfgv(2,M_E) ."\n"; / / eredményül kírja: / / Új névtelen függvényünk: lambda_1 / / ln(2) + ln(2.718281828459) = 1.6931471805599 Példa 2. Általános feldolgozó függvény létrehozása create_function() -nel. function feldolgoz( $valtozo1, $valtozo2, $fvtomb) {for ($f=0; $f count($fvtomb); $f++) echo $fvtomb[$f]($valtozo1,$valtozo2) ."\n";} / / egy csomó matematikai függvény létrehozása $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 ;}'; $fv_tomb = array (create_function('$x,$y', 'return "ezt nem tudom, mi: ".(sin($x) + $x*cos($y)) ;'), create_function('$x,$y', 'return "az átfogó: ".sqrt($x*$x + $y*$y) ;'), create_function('$a,$b', $f1), create_function('$a,$b', $f2), create_function('$a,$b', $f3)); echo "\nAz első tömb anonim függvényekkel\n"; echo "paraméterek: 2.3445, M_PI\n"; feldolgoz(2.3445, M_PI, $fv_tomb); / / most egy csomó sztringkezelő függvény létrehozása $fv_tomb2 = array (create_function('$b,$a' ,'if (strncmp($a,$b,3) == 0) return "** \"$a\ "'. 'és \"$b\"\n** nekem azonosnak tűnik! (az első 3 karakter után)" ;'), create_function('$a,$b' ,'; return "CRCs: ".crc32($a).", ".crc32(b) ;'), create_function('$a,$b' ,'; return "hasonló(a,b) = ".similar_text($a,$b, $p) ."($p%)" ;')); echo "\nA második tömb anonim függvényekkel\n"; feldolgoz("Akkor csillogó és fényes volt .", "Akkor este volt .", $fv_tomb2); Az első tömb anonim függvényekkel paraméterek: 2.3445, M_PI ezt nem tudom, mi: -1.6291725057799 az átfogó: 3.9199852871011 b*a^2 = 4.8103313314525 min( b^2+a, a^2,b) = 8.6382729035898 ln(a / b) = 0.27122299212594 A második tömb anonim függvényekkel ** "Akkor csillogó és fényes volt. "és "Akkor este volt." ** nekem azonosnak tunik! (az elso 3 karakter utan) CRCs: -725381282, 1908338681 hasonló(a,b) = 11(45.833333333333%) Példa 3. Anonim függvények használata 'callback' függvényként $nevelok = array( "a ","egy" ,"az ","ez "); array_walk($nevelok, create_function( '$v,$k' ,'$v = $v ."mangó" ;')); print_r($av); / / PHP 3-soknak var_dump() / / kiírja, hogy: / / Array / / (/ / [0] = a mangó / / [1] = egy mangó / / [2] = az mangó / / [3] = ez mangó / /) / / szrtinggel teli tömb a rövidebbtől a hosszabb felé rendezve $sv = array("rovid" ,"hosszabb" ,"egy nagy string" ,"ez valami sztring dolog"); print_r($sv); / / kiírja, hogy: / / Array / / (/ / [0] = rovid / / [1] = hosszabb / / [2] = egy nagy sztring / / [3] = ez valami sztring dolog / /) / / hosszúság szerinti csökkenő sorrendben rendezve: usort($sv, create_function('$a,$b' ,'return strlen($b) - strlen($a) ;')); print_r($sv); / / kiírja, hogy: / / Array / / (/ / [0] = ez valami sztring dolog / / [1] = egy nagy sztring / / [2] = hosszabb / / [3] = rovid / /) Előző Tartalom Következő Fel