Bu zıkkım niye çalışmaz!

  • Konbuyu başlatan Konbuyu başlatan html99
  • Başlangıç tarihi Başlangıç tarihi
Kodla Büyü

html99

Seçkin Üye
Seçkin Üye
Mesajlar
1,027
if ($z=="s")
{$isaret= & $zmnsbh;}
else
{$isaret= & $zmnogle;}

-----------------------------------

$isaret=($z=="s"?&$zmnsbh:&$zmnogle);

Arkadaşlar araya çizgi çekerek ayırdığım iki kod da aynı şeyi ifade ediyor aslında. Fakat yukarıdakini yazarsam çalışıyor, aşağıdakini yazarsam Parse error: syntax error, unexpected '&' in .............. on line 47 hatasını veriyor. Yardımcı olabilecek var mı?
 
$isaret=($z=="s"?&$zmnsbh:&$zmnogle);
kodundaki & karakterini ayırıp denediniz mi?
$isaret=($z == "s" ? & $zmnsbh: & $zmnogle);
şeklinde yazarsanız daha okunaklı olur diye düşünüyorum. Eğer yine de çalışmazsa aşağıdakini deneyin.. & karakteri değişkenleri and işlemine tabi tutmak için kullanıldığından, hem sağda hem de solda değişkene ihtiyaç var.
$isaret=($z == "s" ? $isaret = & $zmnsbh: $isaret = & $zmnogle);
 
Hocam ilginiz için teşekkür ederim. Yazdıklarınız olmadı. Bir düzeltme yapayım, PHP AND işleminin sembolü && karakteridir. $a && $b şeklinde. & karakteri ise işaretçi tanımlamak için kullanılır. Benim yapmak istediğim $isaret değişkenini işaretçi (pointer) olarak kullanıp kısa if diye tabir edilen yazımla $z değişkeninin durumuna göre uygun diziye işaretçi olarak atamak. Klasik uzun if tipinde kodlar çalışıyor da kısa if tipinde neden çalışmıyor anlayamadım gitti.
 
volkankey' Alıntı:
$isaret=($z='s' ? &$zmnsbh : &$zmnogle);

denesek
Hocam tek tırnak fayda etmedi maalesef;

impetus23' Alıntı:
$z=="s" kısmını ayrıca paranteze alsak? bi de tek tırnakla denesek?:)
Hocam maalesef sınama kısmını ayrıca paranteze alınca da çalışmadı;

alpaygunes' Alıntı:
$isaret=($a==$b)?"dogru":"Yanlış";
bide bunu deneyin

Komut çalışıyor, hocam zaten kodlamalarımda pek çok yerde kısa if kullanıyorum çalışıyorlar. Eke tek satırlık kısa sınamalar yapacaksam kısa if tercih ediyorum hep, pratik geliyor. Pointer işareti (&) ile ilk defa kısa if kullandım ve çalışmadığını görünce şaşırdım.
 
pointer kullanmak zorunda mısın hocam
pointer işlecini kullanmadan denediğinde oluyorsa kısa if de & kullanamadığımız sonucu çıkar ortaya

ne yapacaksın uzun yoldan devam :)
 
volkankey' Alıntı:
pointer kullanmak zorunda mısın hocam
pointer işlecini kullanmadan denediğinde oluyorsa kısa if de & kullanamadığımız sonucu çıkar ortaya

ne yapacaksın uzun yoldan devam :)

İlk mesajımda belirttiğim uzun if ile yola devam ediyorum Hocam. Dediğiniz gibi kısa if de & işaretini kullanamıyoruz sanırım. Garipsedim doğrusu bu durumu. PHP programını yapanların vardır bir bildiği :)
 
Ben de denedim bahsettiğiniz şekilde olmuyor. Sanırım bir eksiklik olarak kalmış ya da sistemsel bir nedenden olmuyor. Belki pointer tanımlamada birden fazla işlem yapıldığından, kısa if de ise sadece bir işlem yapılmasına izin verildiğinden olabilir, sadece bir tahmin.
Ancak yine de ilginç bir durumu tespit etmişsiniz.
 
BBNET
Geri
Üst