Neden "ve" var

5 Cevap php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

$ Anahtar bir dizi indeksi anlamına mı geliyor?

5 Cevap

&$variable_name referans geçiş yapmanın PHP'nin yoludur:

Bkz: http://php.net/manual/en/language.references.pass.php

For more of an explaination of what references are see: http://www.php.net/manual/en/language.references.whatare.php

	$arr = array(1, 2, 3, 4);

	foreach ($arr as $value)
	   $value = $value * 100;
	echo implode(' ', $arr); // 1 2 3 4

	foreach ($arr as &$value)
	    $value = $value * 100;
	echo implode(' ', $arr); // 100 200 300 400

Anladın mı?

İki farklı soru var. Ampersanı hakkında ilk cevaplamak için (&):

Gördüğünüz zaman &, bir değişkenin önüne geçti, bu gerçek değişken değil bunun bir kopyası ile birlikte çalışıyor olacak demektir. Sizin örnek ile $value, genellikle gerçek $value bir kopyası olacağını, böylece değişken için yapılan değişiklikler diziyi etkilemez olmaz. Eğer bunun önünde & koyduğunuzda Ama, gerçek bir dizi veri ile çalışıyoruz.

Ikinci sorunuzu yanıtlamak için, evet, $key nümerik veya ilişkilendirilebilir olsun, dizinin bir endeks.

& yerine dizi öğenin bir kopyasını, $ değer gerçek dizi öğeye başvuru yapmak için PHP söyler. & Olmadan, kod aslında dizi içindeki değerleri değiştirmek olmaz.

& Eğer $value değerleri değiştirmenize olanak verir. Sen olmadan çalışarak deneyebilirsiniz. Tarafından başvuru geçirerek denir.

Eğer düzenli bir dizi yerine bir ilişkisel dizi göstermek için örnek burada $key açıklamak için çok büyük değil. Burada göstermek için iyi bir örnek $key.

$a = array(
  "red" => 1,
  "green" => 2,
  "blue" => 3,
  "white" => 17 /* btw, I patent the white pixel! */
);

foreach ($a as $key => $value) {
  echo "key $key, val $value";
}