Merhaba Arkadaşlar
Fatal error: Uncaught Error: [] operator not supported for strings in Hatası alıyorum, kodlama aşağıdaki gibi
bu kodda $altArrayEkl[]=$altlaricek[0];
<?php
$cs = $db->prepare("Select sayfaLinkAdi From admsayfa Where solMenuUstId=$getir->id && solMenuGoster='1'");
$cs->execute();
while($altlaricek = $cs->fetch(PDO::FETCH_BOTH)){
$altArrayEkl[]=$altlaricek[0];
}
if(in_array($solSuankiLinkSayfaAdi,$altArrayEkl)){
$alttakiactive=true;
} else {
$alttakiactive=false;
}
?>
YARDIM, PHP 7 versiyon ve üzerinde operator hatası alıyorum
9
●115
- 11-04-2021, 01:51:23$altArrayEkl olarak tanimladiginiz degiskenin tipinin array olduguna emin misiniz? String oldugu ici hata aliyorsunuz.emlak21 adlı üyeden alıntı: mesajı görüntüle
- 11-04-2021, 01:59:00Merhaba HocamNoroc adlı üyeden alıntı: mesajı görüntüle
bütün kod yapısı aşağıdaki gibi
<?php if($solYetkiVarmi==true){ if($getir->altmenu>0){ $cs = $db->prepare("Select sayfaLinkAdi From admsayfa Where solMenuUstId=$getir->id && solMenuGoster='1'"); $cs->execute(); while($altlaricek = $cs->fetch(PDO::FETCH_BOTH)){ $altArrayEkl[]=$altlaricek[0]; } if(in_array($solSuankiLinkSayfaAdi,$altArrayEkl)){ $alttakiactive=true; } else { $alttakiactive=false; } ?> - 11-04-2021, 02:13:1327. Satırda dizinin 0. elemanını arraya atıyorsunuz ancak arrayın hangi elemanına atayacağınızı yazmamışsınız yani diziye string değer vermeye çalışıyorsunuz
eğer $altArrayEkl bu değişkeni dizi olarak kullanmayacaksanız $altArrayEkl=$altlaricek[0]; bu şekilde atama yapın dizi olarak kullanacaksanız $altArrayEkl[0]=$altlaricek[0]; şeklinde atayın değeri kullanırkende $altArrayEkl[0] olarak kullanın
while içinde kullanacaksanızda döngü için sayaç belirleyin
$altArrayEkl[$sayac]=$altlaricek[0];
şeklinde atama yapın - 11-04-2021, 02:28:05Merhaba Hocamonurgosteris adlı üyeden alıntı: mesajı görüntüle
dediklerini uyguladım olmadı, sub menü içerisinde alt link lere tıkladığımda, sub menü ve alt linklerinin aktif olması için, sayaç ilgisi varmı bilemiyorum - 11-04-2021, 02:37:1127. satırda döngü içinde
$altArrayEkl[Bu kısım ]=$altlaricek[0];
bunu kullanırken $altArrayEkl[Bu kısım] Bu kısım yazan yeri belirtmeniz gerekli hocam o yüzden Fatal error: Uncaught Error: [] operator not supported for strings hatası alıyorsunuz.
Tüm alt menüleri alıp döngüde teker teker diziye atmak istiyorsanız böyle yapabilirsiniz
$sayac = 0;
while($altlaricek = $cs->fetch(PDO::FETCH_BOTH)){
$altArrayEkl[$sayac]=$altlaricek[0];
$sayac++;
}
yazımı bu şekilde yaparsanız büyük ihtimal bu hatayı almazsınız Fatal error: Uncaught Error: [] operator not supported for strings
eğer $altlaricek[0] bu değişkenden gelen değer dizi ise
if(in_array($solSuankiLinkSayfaAdi,$altArrayEkl)){
$alttakiactive=true;
}
bu if e girmesi için foreach ile temizlemeniz lazım
- 11-04-2021, 02:41:36Hocam şimdide bu hatayı verdi Warning: in_array() expects parameter 2 to be array, string given inonurgosteris adlı üyeden alıntı: mesajı görüntüle
while($altlaricek = $cs->fetch(PDO::FETCH_BOTH)){
$altArrayEkl[$sayac]=$altlaricek[0];
$sayac++;
}
if(in_array($solSuankiLinkSayfaAdi,$altArrayEkl)){
$alttakiactive=true;
} else {
$alttakiactive=false;
} - 11-04-2021, 02:44:41evet hocam tahmin etmiştim yukarıdaki cevabı düzenlemiştim sanırım yazarken görmediniz o if e girmesi için foreach ile $altArrayEkl i temizlemeniz lazım çünkü $altlaricek[0] buradan array geliyor
ama şöylede yapabilirsiniz eğer $altlaricek[0] burdan alt satırları çekerken veritabanındaki kaydettiğiniz tabloya göre
$altArrayEkl[$sayac]= $altlaricek['SADECE ALT TABLONUN ADI VEYA İD'Sİ (EŞİTLİĞİ SORGULADIĞINIZ KISIM)'];
atamayı böyle yaparsanız foreach ile temizlemenize gerek kalmaz
emlak21 adlı üyeden alıntı: mesajı görüntüle - 11-04-2021, 02:50:07