Egyszerű helyzet, de miért ad hibát?
Sziasztok!
Lett egy pici gondom, eddig egész jól haladtam, viszont gondoltam a későbbi munkám könnyítése miatt megírtam az első functionom. A function működik, a hiba maradt...
Ez a kód:
<?php
function nincs_adat($x){
if(empty($x)){
$x="Nincs adat";
return $x;
break;
}
else{
return $x;
}
}
$file = fopen("animelista.txt","r") or exit("Nem lehet megnitni a fájlt!");
echo('<a href="animeleltar.php">Vissza.</a><br />');
while(!feof($file)) {
$sor = fgets($file);
$tomb = explode(", ", $sor);
$sortomb= array();
for($i=0;$i<count($tomb);$i++){
$sortomb[$i] = $tomb[$i];
}
$mentesiido = nincs_adat($sortomb[4]);
print $sortomb[0].", ".$sortomb[1].", ".$sortomb[2].", ".$sortomb[3].", ".$mentesiido;
echo("<br />");
}
echo('<a href="animeleltar.php">Vissza.</a>');
fclose($file);
?>
A proglémám az, hogy functionba elküldöm a nemlétező változót, és kiadja a hibaüzenetet, ugyanakkor beírja a változóba azt amit szeretnék hogy bent legyen. Ezt hogy tudnám megoldani?
(kezdő programozó vagyok, nagyon kezdő)
Internetre ez nem kerülne fel, ez csak nekem készül itthonra.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Egy txt fájlból kinyerem az adatokat, soronként egy tömbben, és ezeket akarom kiíratni, hibakód nélkül.
Viszont vannak adatok, amiknél a tömböm azon indexe még nem került legenerálásra ($sortomb[4]). Az adatokat változókhoz rendelem, viszont a $mentesiido = nincs_adat($sortomb[4]) valamiért hibát is dob, ugyanakkor elvégzi nekem azt, amint előtte functionban el akarok végeztetni vele (Vagyis ha a változó üres, akkor a változóba a "Nincs adat" szöveg kerüljön).
A hibát erre a sorra dobja ki:
$mentesiido = nincs_adat($sortomb[4]);
A készített függvény hozzá az elején van, de ide teszem azt is:
function nincs_adat($x){
if(empty($x)){
$x="Nincs adat";
return $x;
break;
}
else{
return $x;
}
}
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Jesszum, miért kell ezt így agyon bonyolítani? Eleve, minek a break, ha már előtte van egy return?
Ezt így kellene:
function nincs_adat($x){
return empty($x) ? "Nincs adat" : $x;
}
Sajnálom, amatőr szinten programozok, mondhatni a magam szórakoztatása miatt. :)
Pill gyorsan kipróbálom.
A hiba megmaradt, meg a szöveget is ugyanúgy odatette:
Notice: Undefined offset: 4 in C:\xampp\htdocs\proba\animelistazas.php on line 18
próba, 12, 24 perc, TV; , Nincs adat
a 18. sorban ez van:
$mentesiido = nincs_adat($sortomb[4]);
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
$sor = fgets($file);
$tomb = explode(", ", $sor);
$sortomb= array();
for($i=0;$i<count($tomb);$i++){
$sortomb[$i] = $tomb[$i];
}
Tehát először beolvasol egy sort, explode-olod, majd a kapott tömböt átmásolod egy új tömbbe? Könyörgöm, miért?! Nem lenne egyszerűbb eleve az explodeolt tömböt használni?
$mentesiido = nincs_adat($sortomb[4]);
Itt meg, ha a $sortomb[4] nincs definiálva, még szép, hogy hibát ad. Talán isset($sortomb[4])-tel meg kellene vizsgálni, hogy egyáltalán létezik-e.
Ezt a vizsgálatot akartam áttenni functionba, viszont ha issetet, ha emptyt használtam, mindig kiadta a hibákat.
külön minden változóra le tudom vezetni az issetet is, meg az emptyt is, viszont akkor a functionnak nem lenne értelme az elején. Vagy legalábbis szerintem nem sok.
jelenleg a functionnak számomra az az értelme, hogy ne kelljen minden változóhoz feltételt kötnöm, hogy írja ki a szöveget, ha nincs adat abban a változóban.
ezen kívül ezt a funkciót más helyen is használnám ilyenre, ez mellett meg (szerintem) számomra egy ideális gyakorlási lehetőség lenne.
Viszont a kérdésem akkor így már az, hogy ezt a fajta változó ellenőrzést egy functionon belül el lehet végezni valahogy, vagy nem?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Nem értek hozzá, esetleg így?
function nincs_adat(&$x){
...
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!