Hét vraag- en antwoordplatform van Nederland

Kan je niks printen als een array niet bestaat?

Ik ben bezig met een vrij geavanceerde website, maar ik loop ergens op vast.
Ik zal een voorbeeld geven:

Array
(
[0] => appel
[1] => peer
[2] => banaan
[3] => kiwi
)

Ik heb bijvoorbeeld deze array (in PHP), maar als ik dan $array[4] oproep (die ik niet heb natuurlijk) komt deze error: Fatal error: Cannot use [] for reading in F:\xampp\htdocs\test.php on line 31

Die error is opzich logisch, maar is het mogelijk dat als die array niet bestaat dat er dan niks komt te staan? Hoe moet ik dat doen?

Verwijderde gebruiker
10 jaar geleden
625

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Er gaat iets anders fout: Je roept [] aan ipv [4]. Dus je probeert ergens een 4 uit te halen waar niks in zit, of je roept letterlijk $array[] aan, bijvoorbeeld $test = $array[].

Ik heb ook nog nooit zo'n fatal error gekregen wanneer ik een te hoge index in een array probeerde uit te lezen.

Verder kun je een apenstaart voor de expressie kunnen plaatsen: $test = @$array[4], dan zal een error bij het uitlezen van de variabel, genegeerd worden.
(Lees meer...)
Verwijderde gebruiker
10 jaar geleden

Andere antwoorden (1)

Je kunt het aantal elementen in je array tellen met de functie count() .

In jouw voorbeeld:

$lijst[0] = "appel";
$lijst[1] = "peer";
$lijst[2] = "banaan";
$lijst[3] = "kiwi";
$aantal = count($lijst);

$aantal is nu gelijk aan 4, het aantal elementen in jouw array.

Je weet nu dat je alleen de elementen $lijst[0] t/m $lijst[$aantal-1] kunt afdrukken. De rest bestaat niet.
 

Toegevoegd na 14 minuten:
 
Je kunt (in dit voorbeeld) alle elementen afdrukken met een eenvoudige for-lus:

for ($i=0; $i{
    echo $lijst[$i];
}

In dit geval kun je zelfs foreach() gebruiken:

foreach ($lijst as $fruit)
{
    echo $fruit;
}

Zo'n foreach-lus gaat vanzelf alle elementen van je array langs, en houdt dus zelf bij welke elementen wel, en welke niet bestaan.
 
(Lees meer...)
Cryofiel
10 jaar geleden
Verwijderde gebruiker
10 jaar geleden
Dat hoort standaard te gebeuren, zie mijn antwoord.
Cryofiel
10 jaar geleden
Ik heb een for-lus en een foreach-lus toegevoegd als voorbeeld. Hiermee kun je precies die elementen van je array die bestaan, afdrukken. Met de count()-methode kun je eventueel voor alle niet-bestaande elementen een "niets" (een spatie of zo) "afdrukken". Ik heb links toegevoegd naar een goede PHP-manual.
Cryofiel
10 jaar geleden
Is dit iets? echo "";
$aantal = $count($lijst);
for ($i=0; $i<$aantal; $i++)
{      
    echo "";
}      
for ($i=$aantal; $i<60; $i++)
{      
    echo ""
}      
echo "
";
    echo $lijst[$i];
    echo "
 
"; Ik ben geen PHP-kenner, dus controleer het bovenstaande op syntaxfouten.
Cryofiel
10 jaar geleden
Oh ja, in bovenstaande code is de 60 in de tweede for-lus het aantal tabelcellen dat je in totaal afdrukt. De eerste $aantal worden gevuld met de elementen van je array, de laatste elementen (die dus niet in je array staan) worden gevuld met  .
Cryofiel
10 jaar geleden
Als dat niet werkt, kun je altijd nog iets doen in deze trant: $aantal = $count($lijst);
for ($i=$aantal; $i<60; $i++)
{      
    $lijst[$i] = " ";
}       Hiermee zorg je ervoor dat alle niet-gedefinieerde elementen van je array alsnog een waarde krijgen; in dit geval " ". Daarna kun je heel gewoon $array[0] t/m $array[59] afdrukken; je weet nu immers zeker dat die allemaal bestaan.

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 2500
Gekozen afbeelding