Langste woord in een Array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

S Berisha

S Berisha

06/10/2015 16:31:36
Quote Anchor link
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.
 
PHP hulp

PHP hulp

20/04/2024 15:32:55
 
Marthijn Buijs

Marthijn Buijs

06/10/2015 16:36:41
Quote Anchor link
Dit klinkt als een schoolopdracht, moet je hiervoor niet bij je vakdocent zijn?
 
S Berisha

S Berisha

06/10/2015 16:42:54
Quote Anchor link
PHP Maarten op 06/10/2015 16:36:41:
Dit klinkt als een schoolopdracht, moet je hiervoor niet bij je vakdocent zijn?


Het is 1 van de huiswerkopdrachten, aangezien mijn vakdocent niet bij mij in huis woont en graag verder wil werken, zou het fijn zijn als iemand anders mij kan helpen!
 
- Mark -

- Mark -

06/10/2015 16:46:31
Quote Anchor link
Wat heb je tot nu toe? Je weet hoe je de lengte van een string kan bepalen en hoe je door een array loopt?
 
S Berisha

S Berisha

06/10/2015 16:52:02
Quote Anchor link
- Mark - op 06/10/2015 16:46:31:
Wat heb je tot nu toe? Je weet hoe je de lengte van een string kan bepalen en hoe je door een array loopt?


function langsteWoord($langste){
return
}

$langste = array("woord", "woorden", "langste");

print(langsteWoord($langste));

Dit is het enige wat ik heb, ik weet dat je met een foreach een array doorloopt.
 
- Mark -

- Mark -

06/10/2015 16:56:38
Quote Anchor link
Dan ben je al halverwege, met strlen() kun je gemakkelijk de lengte van een woord bepalen. Ik zou zeggen probeer eerst zelf of je er nu wel uitkomt. Zo niet, dan horen we het wel.
 
Ozzie PHP

Ozzie PHP

06/10/2015 17:08:21
Quote Anchor link
Oh, enne ... geef jezelf aub even een herkenbare naam.

Welkom op het forum.
 
S Berisha

S Berisha

06/10/2015 17:08:39
Quote Anchor link
- Mark - op 06/10/2015 16:56:38:
Dan ben je al halverwege, met strlen() kun je gemakkelijk de lengte van een woord bepalen. Ik zou zeggen probeer eerst zelf of je er nu wel uitkomt. Zo niet, dan horen we het wel.


Sorry, maar ik kom er echt niet uit krijg verschillende foutmeldingen..
 
- Mark -

- Mark -

06/10/2015 17:09:25
Quote Anchor link
Wat heb je gedaan en welke foutmeldingen krijg je?
 
S Berisha

S Berisha

06/10/2015 17:14:30
Quote Anchor link
- Mark - op 06/10/2015 17:09:25:
Wat heb je gedaan en welke foutmeldingen krijg je?


return strlen($langste); dit heb ik in de functie toegevoegd, en waar zou de foreach moeten komen te staan?
 
Ozzie PHP

Ozzie PHP

06/10/2015 17:17:06
Quote Anchor link
Wil je aub je naam even aanpassen? Dank je.

Heb je wel les gehad in informatica?
 
S Berisha

S Berisha

06/10/2015 17:24:15
Quote Anchor link
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.
 
Marthijn Buijs

Marthijn Buijs

06/10/2015 17:29:00
Quote Anchor link
Het eens tijd om weer relevante code te plaatsen.
 
Ozzie PHP

Ozzie PHP

06/10/2015 17:34:28
Quote Anchor link
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?
 
- Mark -

- Mark -

06/10/2015 17:48:07
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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;

?>
 
S Berisha

S Berisha

06/10/2015 17:52:38
Quote Anchor link
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");
 
Ivo P

Ivo P

06/10/2015 18:13:16
Quote Anchor link
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?
 
Eddy E

Eddy E

06/10/2015 20:35:51
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "Het langste woord is: ".$array[0];
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.