Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: znak & (ampersand) wstawiony przed nazwą funkcji
Forum PHP.pl > Forum > PHP
kufalo
Witam,

Dowiedzialem sie, ze:
Znak & (ampersand) wstawiony przed nazwą funkcji informuje funkcje że ma zostać zwróca referencja.

Moge prosic o jakis krotki przyklad, bo nie wyobrazam sobie za bardzo na czym to polega i jak to mozna wykorzystac.
qqrq
To zależy czy masz na myśli & przed definicją czy przed wywołaniem funkcji. Przed wywołaniem, jeśli masz jakąś nowszą wersję PHP (np. 5), i tak nic ci nie da (jest zdeprecjonowane, o czym na pewno poinformuje cię samo PHP jakimś NOTICE-em). W drugim przypadku nie jestem pewien. Wiem że & przed nazwą zmiennej w definicji funkcji oznacza przekazanie jej przez referencję (adres), czyli m. in. możliwość bezproblemowego odwołania się do tej zmiennej PO wywołaniu funkcji...
zimi
Cytat
Przed wywołaniem, jeśli masz jakąś nowszą wersję PHP (np. 5), i tak nic ci nie da (jest zdeprecjonowane, o czym na pewno poinformuje cię samo PHP jakimś NOTICE-em).

kiedyś udało mi się przez referencje nawet jakiegoś errora złapać, jednak teraz nie pamiętam jak to mi się udało, w każdym razie mam jakieś PHP 5.2.0
i kod poniżej nawet strictów nie generuję
  1. <?php
  2. error_reporting(E_ALL|E_STRICT);
  3. function &referencja(&$tablica, $indeks)
  4. {
  5. return $tablica[$indeks];
  6. }
  7. $tab = array('kolor' => 'czerwony', 'kształt' => 'kwadrat', 'wielkość' => 'duży');
  8. var_dump($tab);
  9. $kolor = &referencja($tab, 'kolor');
  10. $kolor = 'zielony';
  11. var_dump($tab);
  12. ?>

przykład niezbyt ambitny ale pokazuję jak można na przykład to wykorzystać
osobiście nie przepadam za referencjami, są moim zdaniem mało przyjazne użytkownikowi...
em1X
Referencja jest to przekazywanie przez wskaźnik, nie przez wartość.
Jeżeli nie widzisz jeszcze zastosowania dla tego typu instrukcji to na razie daj sobie z tym spokój smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.