- Katılım
- 2 Mar 2015
- Konular
- 59,185
- Mesajlar
- 88,376
- Online süresi
- 4ay 14g
- Reaksiyon Skoru
- 14,227
- Altın Konu
- 2,398
- Başarım Puanı
- 1,051
- TM Yaşı
- 11 Yıl 1 Ay 21 Gün
- MmoLira
- 694,336
- DevLira
- 234
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
PHP'deki bir fonksiyona, skaler tiplere, dizilere ve nesnelere ek olarak, bir fonksiyonu argümanlarından biri olarak da geçirebilirsiniz. Bir fonksiyon, başka bir fonksiyonu argüman olarak kabul edecek şekilde tanımlanmışsa, geçirilen fonksiyon onun içinde çağrılır. PHP'nin standart kütüphanesinde, geçirilecek argümanlardan birinin bir fonksiyon olduğu, başka bir yerleşik fonksiyon veya hatta kullanıcı tanımlı bir fonksiyon olabilen bu türden belirli yerleşik fonksiyonlar vardır.
array_map (dizi_haritası)
array_map() yerleşik işlevlerden biridir. Bu işlevin ilk argümanı bir geri çağırma işlevidir. Diğer argümanlar olarak bir veya daha fazla dizi olabilir. Geri çağırma işlevi dizilerin tüm elemanlarına uygulanır.array_map(?callable $callback, array $array, array ...$arrays): array
array_map() fonksiyonu bir dizi döndürür. Geri çağırma fonksiyonunun diğer argümanlar olarak geçirilen dizilerin karşılık gelen elemanlarına uygulanmasının sonucunu içerir.
Örnek
Aşağıdaki örnekte, kendisine geçirilen bir sayının karesini hesaplayan bir square() fonksiyonumuz var. Bu fonksiyon, başka bir sayı dizisiyle birlikte array_map() fonksiyonu için bir argüman olarak kullanılır. Her sayı sırayla squares() fonksiyonuna geçirilir. Sonuç dizisi bir kareler listesidir.
PHP:
<?php
function square($number) {
return $number * $number;
}
$arr = [1, 2, 3, 4, 5];
$squares = array_map('square', $arr);
var_dump($squares);
?>
Aşağıdaki çıktıyı üretecektir:
array(5) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(9)
[3]=>
int(16)
[4]=>
int(25)
}
call_user_func (çağrı_kullanıcı_fonksiyonu)
Bir fonksiyonu başka bir fonksiyona geçirmenin bir başka örneği call_user_func()'dır. Adından da anlaşılacağı gibi, başka bir kullanıcı tanımlı geri çağırma fonksiyonunu çağırır ve diğer argümanlar geri çağırmaya geçirilir.call_user_func(callable $callback, mixed ...$args): mixed
Örnek
Aşağıdaki örnekte, square() fonksiyonu tekrar tekrar çağrılarak dizideki her sayı geçirilir.
PHP:
<?php
function square($number) {
return $number * $number;
}
$arr = [1, 2, 3, 4, 5];
foreach($arr as $a) {
echo "square of $a:" . call_user_func("square", $a). PHP_EOL;
}
?>
Aşağıdaki çıktıyı üretecektir:
square of 1:1
square of 2:4
square of 3:9
square of 4:16
square of 5:25
Usort
Fonksiyon geçirmenin bir başka örneği olarak usort() fonksiyonuna bakalım.usort(array &$array, callable $callback): true
İlk parametre bir dizidir. Dizi, ikinci parametre olan geri çağırma fonksiyonuna göre sıralanır.
Geri çağırma parametresi bir karşılaştırma fonksiyonudur ve ilk argümanın ikinci argümandan küçük, eşit veya büyük olduğu düşünülürse sıfırdan küçük, eşit veya büyük bir tam sayı döndürmelidir.
Örnek
İşte bir örnek. Önce bir mysort() fonksiyonumuz var. İki sayıyı karşılaştırır ve ilk sayı ikinci sayıdan küçük, eşit veya büyükse "-1", "0" veya "1" döndürür.usort()' un ilk argümanı mysort() fonksiyonudur ve ikincisi bir dizidir. Başlamak için, ilk iki sayı mysort()'a geçirilir. 1 döndürürse, bunlar değiştirilir. Sonra, karşılaştırma 1 döndürürse, ikinci ve üçüncü sayılar geçirilir ve değiştirilir. Aynı işlem, dizi elemanlarının artan düzende düzenlenmesi için tekrarlanır.
PHP:
<?php
function mysort($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a, "mysort");
foreach ($a as $key => $value) {
echo "$key: $value\n";
}
?>
Aşağıdaki çıktıyı üretecektir:
0: 1
1: 2
2: 3
3: 5
4: 6
Kullanıcı tanımlı fonksiyona geri aramayı geçir
Yukarıdaki yerleşik fonksiyonların dışında, argümanlardan birini başka bir fonksiyon olarak kabul eden kendi fonksiyonunuzu tanımlayabilirsiniz.Aşağıdaki örnekte, verilen sayının karesini ve küpünü döndüren square() ve cube() adında iki fonksiyonumuz var.
Sonra, ilk argümanı değişken fonksiyon olarak kullanılan ve myfunction() 'ın ikinci argümanı ona geçirilen myfunction() var.
Bu nedenle, myfunction() dahili olarak square() veya cube()'ü çağırarak verilen sayının karesini veya küpünü döndürür.
Örnek
PHP:
<?php
function myfunction($function, $number) {
$result = $function($number);
return $result;
}
function cube($number) {
return $number ** 2;
}
function square($number) {
return $number ** 3;
}
$x = 5;
$cube = myfunction('cube', $x);
$square = myfunction('square', $x);
echo "Square of $x = $square" . PHP_EOL;
echo "Cube of $x = $cube" . PHP_EOL;
?>
Aşağıdaki çıktıyı üretecektir:
Square of 5 = 125
Cube of 5 = 25

