PHP işlevi karışıklık

3 Cevap

Ben şu senaryoyu (basitleştirilmiş) var:

function changeFruit($fruit) {
    changeAgain($fruit);

}

function changeAgain($fruit) {
     $fruit = "Orange";
}

MAIN:

$fruit = "Apple";
changeFruit($fruit);
echo $fruit // Will show up as "Apple", How do I get it to show up as "Orange"??

EDIT: FORGOT TO ADD. THE SCENARIO CANNOT USE RETURN STATEMENTS - JUST &$variable

Thanks! Matt Mueller

3 Cevap

PHP bir işlev bir nesne olmayan bir şey geçirdiğinizde, php bu bir kopyası işlev içinde kullanmak için yapar.

Bir kopyasını kullanmak değil yapmak için, size bir başvuru geçirmeden PHP söylemek gerekir.

Bu ve ile yapılır operatör

function changeFruit(&$fruit) {
    changeAgain($fruit);

}

function changeAgain(&$fruit) {
     $fruit = "Orange";
}

$fruit = "Apple";
changeFruit($fruit);
echo $fruit;

(Bu okumak şeyler daha kolay yapar gibi) Bu fonksiyonların geri dönüş değerleri kullanmak, daha mantıklı ve daha iyi bir uygulama olurdu

function changeFruit($fruit) {
    return changeAgain($fruit);
}

function changeAgain($fruit) {
     // do something more interesting with$fruit here
     $fruit = "Orange";
     return $fruit;
}

$fruit = "Apple";
$fruit = changeFruit($fruit);
echo $fruit
function changeFruit($fruit) {
    return changeAgain($fruit);

}

function changeAgain($fruit) {
     return $fruit = "Orange";
}

MAIN:

$fruit = "Apple";
$fruit = changeFruit($fruit);
echo $fruit;

Umarım ki olur!

Not: changeAgain işlevi getiri ve üzerine $ meyve = changeFruit ($ meyve);

Sen fonksiyonlardan dönen değerleri değildir. Bu deneyin:

function changeFruit($fruit) {
    return changeAgain($fruit);

}

function changeAgain($fruit) {
     $fruit = "Orange";
     return $fruit;
}

MAIN:

$fruit = "Apple";
$fruit = changeFruit($fruit);