Kan iemand mij helpen met de volgende vraag:

Schrijf een functie die het langste woord in een array retourneert. Als er meerdere van gelijke lengte
in staan dan moet het antwoord de eerste zijn die je tegenkomt.
Ozzie PHP op 06/10/2015 17:17:06

Wil je aub je naam even aanpassen? Dank je.

Heb je wel les gehad in informatica?


Gedaan! & ja.
Het eens tijd om weer relevante code te plaatsen.
S Berisha op 06/10/2015 17:24:15

Gedaan! & ja.

Dankje ... als je nou een voornaam plaatst (eventueel in plaats van achternaam) dan hoeven we je niet met "S" aan te spreken :)

Welke code heb je dan tot nu toe?
Gewoon lukraak toevoegen heeft geen enkele zin natuurlijk. Er moet natuurlijk wel wat met de waarde gedaan worden.

Kun je de if() in onderstaande code zelf invullen?

<?php

# De lijst met woorden die we gaan controleren.
$list = array('woord', 'woorden', 'langste');

# De var waarin we het resultaat gaan opslaan.
$the_result = '';

# Doorlopen die handel.
foreach($list as $key => $value){

# Controleren of we te maken hebben met het langste woord in de lijst.
if(){

# We hebben te maken met het langste woord. Opslaan die handel.
$the_result = $value;
}
}

# Resultaat weergeven.
echo $the_result;

?>
Bedankt voor de reacties, ik heb een oplossing!

function longestWord ($array) {
$strlen = 0;
$longest = 0;
foreach ($array as $key => $value) {
if (strlen($value) > $strlen) {
$strlen = strlen($value);
$longest = $key;
}
}
return $array[$longest];
}

$lista = array("aap", "noot", "mies");
print (longestWord($lista) . "\n");

Vraag: waarom krijgt $longest vooraf de waarde 0?

Die variabele gaat uiteindelijk het langste woord bevatten. $longest = ''; zal je direct verraden dat er inderdaad een string in moet komen. met een getal wordt je op het verkeerde been gezet.

Wen er ook aan om variabelen een naam te geven die beschrijft wat erin zit.

$strlen duidt op een lengte van een string. Maar in werkelijkheid is het de lengte van de langste string tot nu toegevonden. $longest_string_length of iets dergelijks beschrijft dat beter.

Net als $longest beter $longest_string zou kunnen zijn.

--
heb je dit trouwens zelf uitgedacht of ergens vandaan gegoogelt?
Ook hier kan Google je beste vriend zijn: http://lmgtfy.com/?q=php+array+sort+by+strlen

Kwestie van je vraag in het engels deponeren.
De eerste hit geeft je een perfecte code.

<?php

function sort($a,$b){
    return strlen($b)-strlen($a);
}

usort($array,'sort');
?>


$array is dan gesorteerd van lang naar kort.
Aangezien je er maar 1 nodig heb:

<?php
echo "Het langste woord is: ".$array[0];
?>


Reageren