[PHP] Suche kleinstes/größtes Element aber keine ausgabe :-(

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Don Poncho, 8. Oktober 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 8. Oktober 2008
    Suche kleinstes/größtes Element aber keine ausgabe :-(

    Hallo,
    also da ich morgen info klausur schreibe wollt ich jetz nochma eben nen bischen lernen.
    wir hatten gerade suchen und sortieren und dazu habe ich jetz diese kleine seite erstellt:

    Code:
    <?php
     function suchekleinstesElement ( $array, $integer ) {
     $kleinstesElement = $integer;
     for ( $aktuellesElement = $integer; $aktuellesElement < count ( $array ); $aktuellesElement++ ) {
     if ( $array [ $atuellesElement ] < $array [ $kleinstesElement ] )
     $kleinstesElement = $aktuellesElement;
     }
     return $kleinstesElement;
     }
    
     function suchegroesstesElement ( $array, $integer ) {
     $groesstesElement = $integer;
     for ( $aktuellesElement = $integer; $aktuellesElement < count ( $array ); $aktuellesElement++ ) {
     if ( $array [ $aktuellesElement ] > $array [ $groesstesElement ] )
     $groesstesElement = $aktuellesElement;
     }
     return $groesstesElement;
     }
    
     echo "
     <html>
     <head>
     <title>
     Suche das ". $suchenach ." Element
     </title>
     </head>
     <body>
     <form name='suche' method='post' action='SucheElement.php'>
     <h1>Suche das Element</h1>
     <br>
     Text : 
     </br>
     <input type='text' name='text'>
     <br>
     Was soll gesucht werden?
     </br>
     <br>
     <input type='radio' name='suchenach' value='groesste'>
     groesstes Element
     </br>
     <br>
     <input type='radio' name='suchenach' value='kleinste'>
     kleinstes Element
     </br>
     <br>
     <input type='submit' name='go' value='Such...'>
     </form>
     </body>
     </html> ";
    
     if ($_POST['go']){
     $string = $_POST['text'];
     $array = explode ( ' ', $string ) ;
     $integer = 0;
     $suchenach = $_POST['suchenach'];
    
     switch ( $suchenach )
     {
     case "groesste":
     suchegroesstesElement ($array, $integer);
     echo "Das groesste Element ist ". $groesstesElement ." !";
     break;
     case "kleinste":
     suchekleinstesElement ($arary, $integer);
     echo "Das kleinste Element ist ". $kleinstesElement ." !";
     break;
     default:
     echo "Bitte wählen Sie nach was gesucht werden soll!";
     }
     }
    
     ?>
    
    funktioniert auch bis auf zweit sachen alles ganz gut:
    erstens: er gibt das größte/kleinste Element nicht aus.
    zweitens: das mit dem größte/kleinste in der überschrift geht ja erst nachdem man es 1x gemacht hat, gibts da ne schönere lösung?

    danke schonmal, wenn ihr noch ein parr vorschläge habt bitte sagen!
     
  2. 8. Oktober 2008
    AW: Suche kleinstes/größtes Element aber keine ausgabe :-(

    PHP:
    <? php
        $foo 
    = array( 1 , 2 , 3 , 4 , 5 , 6 ,- 4 );
        
        function 
    array_min (array  $array ) {
            
    sort ( $array SORT_NUMERIC );
            
    $v  each ( $array );
            return 
    $v [ 'value' ];
        }
        
        function 
    array_max (array  $array ) {
            
    sort ( $array SORT_NUMERIC );
            return 
    end ( $array );
        }    
        
        print 
    array_max ( $foo );  //6
        
    print  array_min ( $foo );  //-4
    ?>
    mfg
     
  3. 8. Oktober 2008
    AW: Suche kleinstes/größtes Element aber keine ausgabe :-(

    ahso das hab ich vll vergessen zu sagen^^
    ich sollte das selber programmieren und nicht die fertigen php funktionen benutzen, halt zur übung und zum verständnis!
    man muss das rad zwar nich zweimal erfinden aber man sollte schon ferstehen wies funktioniert

    edit:
    ahso und danke schonmal ^^
     
  4. 8. Oktober 2008
    AW: Suche kleinstes/größtes Element aber keine ausgabe :-(

    Du hast 'n Rechtschreibfehler.
    PHP:
                  if (  $array  $atuellesElement  ] <  $array  $kleinstesElement  ] )
    bei der ersten Funktion sollte ggf. "aktuellesElement" heißen.
    Außerdem würde ich nicht nur den Key ausgeben, sondern $array[$aktuellesElement], d.h. den Wert.
    Solltest dir angewöhnen, oder deinem Lehrer sagen er soll es sich angewöhnen, normale Laufvariablen wie zb i,j,k etc. zu verwenden und nicht sone komischen wie "aktuellesElement" ^^ is doch viel zu lang.
    Außerdem solltet ihr count($array) nicht im head der for schleife benutzen sondern davor $count = count($array) benutzen. und dann halt $count. damits nich jedesmal berechnet werden muss. k? k.
    - hä? mach halt ne if abfrage.
    if(!empty($suchenach)) print 'du suchst nach '.$suchenach; else print 'du suchst gar nicht.';
    o.ä.
     
  5. 8. Oktober 2008
    AW: Suche kleinstes/größtes Element aber keine ausgabe :-(

    also die langen variablen namen hab ich gemacht, normalerweise nehm ich auch i und soweiter.
    dasmit dem vorher counten find ich ok und verständlich, spart ja auch nen bischen rechenleistung ^^
     
  6. 9. Oktober 2008
    AW: Suche kleinstes/größtes Element aber keine ausgabe :-(

    PHP:
    <? php
        
    function  array_max (array  $array $fallback  0 ) {
            
    $current  $fallback ;
            for(
    $i  0 $to  count ( $array );  $i  $to $i ++) {
                if(
    is_numeric ( $array [ $i ]) && ( $number  floatval ( $array [ $i ])) >  $current )
                    
    $current  $number ;
            }
            
            return (!
    is_numeric ( $current )) ?  false  $current ;
        }
        
        function 
    array_min (array  $array $fallback  0 ) {
            
    $current  $fallback ;
            for(
    $i  0 $to  count ( $array );  $i  $to $i ++) {
                if(
    is_numeric ( $array [ $i ]) && ( $number  floatval ( $array [ $i ])) <  $current )
                    
    $current  $number ;
            }
            
            return (!
    is_numeric ( $current )) ?  false  $current ;
        }
    ?>
    <html>
        <head>
            <title>
                Suche
                <?php  if(!empty( $_POST [ 'search' ])):  ?>
                    gestartet: <?php  print ( $search  htmlspecialchars ( $_POST [ 'search' ]));  ?>
                <?php  else:  ?>
                    - warte auf Benutzereingabe
                <?php  endif;  ?>
            </title>
            <script type="text/javascript">
            //<![CDATA[
                Array.prototype.max = function(fallback) {
                    var current = fallback, number;
                    for(var i = 0, to = this.length; i < to; i++) {
                        if(this[i].match(/^[\d\.-]+$/) && (number = parseFloat(this[i])) > current) {
                            current = number;
                        }
                    }
                    
                    return (!current && current !== 0) ? false : current;
                };
                
                Array.prototype.min = function(fallback) {
                    var current = fallback, number;
                    for(var i = 0, to = this.length; i < to; i++) {
                        if(this[i].match(/^[\d\.-]+$/) && (number = parseFloat(this[i])) < current) {
                            current = number;
                        }
                    }
                    
                    return (!current && current !== 0) ? false : current;
                };
                
                function handleForm(form) {
                    var search = form.elements.search.value;
                    if(search == '') {
                        alert('Eingabefeld "Text" darf nicht leer sein!');
                        return false;
                    } else search = search.split(' ');
                    
                    var find = form.elements.find;
                    if(find[0].checked == true) find = find[0];
                    else if(find[1].checked == true) find = find[1];
                    else {
                        alert('Sie muessen waehlen nach was gesucht werden soll');
                        return false;
                    }
                    
                    switch(find.value) {
                        case '1':
                            var result = search.max(Number.MIN_VALUE);
                            alert('Das groesste Element ist: ' + (result === false ? 'undefiniert' : result));
                            break;
                        case '2':
                            var result = search.min(Number.MAX_VALUE);
                            alert('Das kleinste Element ist: ' + (result === false ? 'undefiniert' : result));
                            break;
                        default:
                            alert('Ihre Eingabe ist fehlerhaft!');
                    }
                }
            //]]>
            </script>
        </head>
        <body style="text-align:center;background-color:#f5f5f5;margin:50px;">
            <div style="margin:0 auto;border:1px solid #afafaf;padding:8px;width:400px;text-align:left;background-color:#fff;">
                <?php  if(empty( $_POST [ 'search' ])):  ?>
                    <h3>Suche</h3>
                    <?php  if(isset( $_POST [ 'search' ])):  ?>
                        <em style="color:#bf0000;">Eingabefeld &quot;Text&quot; darf nicht leer sein!</em>
                    <?php  endif;  ?>
                    <form action="<?php  print  $_SERVER [ 'PHP_SELF' ];  ?>" method="post" onsubmit="handleForm(this); return false;">
                        <h4>Text:</h4>
                        <input type="text" name="search" size="45" />
                        <p style="font-style:italic;font-size:11px;font-family:verdana;color:#696969;">
                            Bitte trennen Sie ihre Zahlen mit einem Leerzeichen
                        </p>
                        
                        <h4>Was soll gesucht werden?</h4>
                        <label for="findBiggest">
                            <input type="radio" name="find" id="findBiggest" value="1" checked="checked" /> Gr&ouml;sste
                        </label>
                        
                        <label for="findSmallest">
                            <input type="radio" name="find" id="findSmallest" value="2" /> Kleinste
                        </label>
                        
                        <p><input type="submit" value="Suchen" /></p>
                    </form>
                <?php  else:  ?>
                    <h3>Suchergebniss</h3>
                    <p style="font-style:italic;font-size:11px;font-family:verdana;color:#696969;">
                        <strong>Suche:</strong> <?php  print  $search ?>
                    </p>
                    <p style="border:1px solid #dfdfdf;padding:5px;">
                        <?php
                            
    //$search was defined in <title></title>
                            
    $array  explode ( ' ' $search );
                            switch(
    $_POST [ 'find' ]) {
                                case 
    '1' :
                                    
    $result  array_max ( $array , - PHP_INT_MAX );
                                    print 
    'Das gr&ouml;sste Element ist: <strong>' 
                                        (
    $result  ===  false  'undefiniert'  $result ) .  '</strong>' ;
                                    break;
                                case 
    '2' :
                                    
    $result  array_min ( $array PHP_INT_MAX );
                                    print 
    'Das kleinste Element ist: <strong>' 
                                        (
    $result  ===  false  'undefiniert'  $result ) .  '</strong>' ;
                                    break;
                                default:
                                    print 
    'Ihre Eingabe ist fehlerhaft!' ;
                            }
                        
    ?>
                    </p>
                    <a style="color:#bf0000;font-weight:bold;" href="<?php  print  $_SERVER [ 'PHP_SELF' ];  ?>">Neue Suche</a>
                    <form method="post" action="<?php  print  $_SERVER [ 'PHP_SELF' ];  ?>">
                        <input type="hidden" name="search" value="<?php  print  $search ?>" />
                        
                        <h4>Was soll gesucht werden?</h4>
                        <label for="findBiggest">
                            <input type="radio" name="find" id="findBiggest" value="1" <?php  if( $_POST [ 'find' ] ==  '1' ) print  'checked="checked"' ?> /> Gr&ouml;sste
                        </label>
                        
                        <label for="findSmallest">
                            <input type="radio" name="find" id="findSmallest" value="2" <?php  if( $_POST [ 'find' ] !=  '1' ) print  'checked="checked"' ?> /> Kleinste
                        </label>
                        <p><input type="submit" value="Suchen" /></p>
                    </form>
                <?php  endif;  ?>
            </div>
        </body>
    </html>
    die langeweile mal wieder...
    du kannst mich gerne fragen wenn du was nicht verstehst.
     
  7. 9. Oktober 2008
    AW: Suche kleinstes/größtes Element aber keine ausgabe :-(

    w00t nice
    ich werds mir am wochenende mal genauer anschauen!

    danke dir und allen anderen
    bw habt ihr
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.