lostyazilim
tr.link

Return Sorunsalı

4 Mesajlar 656 Okunma
lstbozum
tr.link

mucosoft mucosoft Mucosoft Kullanıcı
  • Üyelik 07.10.2013
  • Yaş/Cinsiyet 26 / E
  • Meslek Bilgisayar Programcısı
  • Konum Giresun
  • Ad Soyad M** E**
  • Mesajlar 648
  • Beğeniler 181 / 81
  • Ticaret 5, (%100)
Neden bu PHP, return kodunu düzgün çalıştırmıyor? Neden sorunlu?


for($i = 0; $i < count($roles); $i++)
{
$query = $db->query("SELECT * FROM userroles WHERE id = '$roles[$i]'")->fetch(PDO::FETCH_ASSOC);
$roleview = $query["view"];
$text = $text . "$roleview ";
echo($text);
}

Bunu yazınca düzgün çalışıyor, 2 kez döndürüyor.


for($i = 0; $i < count($roles); $i++)
{
$query = $db->query("SELECT * FROM userroles WHERE id = '$roles[$i]'")->fetch(PDO::FETCH_ASSOC);
$roleview = $query["view"];
$text = $text . "$roleview ";
return($text);
}

Bunu yazınca 1 kez döndürüyor. Return neden for döngüsünü düzgün çalıştırmıyor?
 

 

wmaraci
reklam

emreyvz emreyvz .NET Core & Angular & PHP Kullanıcı
  • Üyelik 19.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad E** Y**
  • Mesajlar 691
  • Beğeniler 110 / 250
  • Ticaret 24, (%100)
return Nedir: Bir işlevin içinde kullanıldığında, return deyimi çalışmakta olan işlevi hemen sonlandırıp değiştirgesini çağrılan işlevin değeri olarak döndürür. return ayrıca, bir betiğin veya bir eval() deyiminin çalışmasını sonlandırmak için de kullanılabilir.


Döngü içerisinde kullandığınız return döngüyü sonlandırıyor. Eğer return ile döndürecekseniz array tanımlayıp gerekli verileri array'e push edip en son aşamada return edin.


Function - Return
Does return stop a loop?


Kolay gelsin...
AhmetKarabulut mucosoft

kişi bu mesajı beğendi.

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
Çünkü return dediğin anda fonksiyon işi bitirip verdiğin değişkeni döndürür.




$count = count($roles); // For loopunda count size of çalıştırılmaz. 100 satırlık array için 100 defa aynı fonksiyonu çağırırsın.
$in = [];
for($i = 0; $i < $count ; $i++) {
array_push($in,$roles[$i]); // Concat yani $hede." ".$hodo işleri array yapıp toplamaktan pahalıya gelir.
}

$out = [];
$result = $db->query("SELECT * FROM userroles WHERE id IN (".implode(',',$in).")")->fetch(PDO::FETCH_ASSOC); // Sql sogularını minimize etmek istiyoruz. loop içinde sql çağrısı yapılmaz. 100 tane eleman olsa çökerttin sunucuyu.
foreach($result as $res) {
array_push($out,$res["view"]);
}

return implode(" ",$out);


fetch ten sonra objemi dönüyor arraymı hatırlayamadım. Onun için test et. Olmaz ise çıkan hata mesajları ni forma yaz bakalım
mucosoft

kişi bu mesajı beğendi.

mucosoft mucosoft Mucosoft Kullanıcı
  • Üyelik 07.10.2013
  • Yaş/Cinsiyet 26 / E
  • Meslek Bilgisayar Programcısı
  • Konum Giresun
  • Ad Soyad M** E**
  • Mesajlar 648
  • Beğeniler 181 / 81
  • Ticaret 5, (%100)

SancarSaran adlı üyeden alıntı

Çünkü return dediğin anda fonksiyon işi bitirip verdiğin değişkeni döndürür.




$count = count($roles); // For loopunda count size of çalıştırılmaz. 100 satırlık array için 100 defa aynı fonksiyonu çağırırsın.
$in = [];
for($i = 0; $i < $count ; $i++) {
array_push($in,$roles[$i]); // Concat yani $hede." ".$hodo işleri array yapıp toplamaktan pahalıya gelir.
}

$out = [];
$result = $db->query("SELECT * FROM userroles WHERE id IN (".implode(',',$in).")")->fetch(PDO::FETCH_ASSOC); // Sql sogularını minimize etmek istiyoruz. loop içinde sql çağrısı yapılmaz. 100 tane eleman olsa çökerttin sunucuyu.
foreach($result as $res) {
array_push($out,$res["view"]);
}

return implode(" ",$out);


fetch ten sonra objemi dönüyor arraymı hatırlayamadım. Onun için test et. Olmaz ise çıkan hata mesajları ni forma yaz bakalım


Aslında bir hata yokmuş. Ben değişkeni yanlış yazmışım.
 

 

wmaraci
wmaraci
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al