php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.03.2009, 10:44  
Neuer Benutzer
 
Registriert seit: 02.03.2009
Beiträge: 10
JaYceE befindet sich auf einem aufstrebenden Ast
Standard Zwei Arrays vergleichen und kommazahl ermitteln

ich habe ein array möchte von einer bestimmten stelle bis zum nächsten nicht leeren eintrag(keys sind trotzdem da) des arrays, die anzahl der bis dorthin ausgegebenen einträge(keys trotzdem da)eines anderen array herausfinden. der grundsätzliche aufbau ist schon in einer for schleife verpackt, welche ich auch nicht entfernen darf.

wüsste da jemand wie das aussehen könnte?
mein vorhaben bei der ganzen sache ist es, in dem ersten array sind anfangsbuchstaben der worte des zweiten arrays, die worte in dem zweiten array sind durch array_unique "gekürzt" und sind auch gezählt. in dem ersten array wurde nur array_unique durchgeführt.
es soll ein sortieralgorhytmus sein wo nach den beiden anfangsbuchstaben der worte sortiert wird.

die ausgabe SOLL so aussehen:

ab - abtransport, abgehen, abendessen
de - deutsch, der(3)

so, mir macht die komma ausgabe probleme, wie finde ich raus an welchen stellen das komma ausgegeben werden soll?

achso außerdem müssten die werte hinter dem bindestrich rückwerts alphabetisch sortiert sein. bei bedarf werde ich nachher den quelltext uploaden.
JaYceE ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.03.2009, 10:50  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Seit wann darf man Code nicht verändern? Kannst du vielleicht noch ein Beispiel für den Aufbau des Arrays zeigen? Kann mir da noch nicht viel drunter vorstellen.
cycap ist offline  
Alt 02.03.2009, 11:32  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Ist das ganze ein Multidimensionales Array?
z.b so:
PHP-Code:
$array = array(
  
'ab' => array(
    
'abtransport',
    
'abgehen',
    
'abendessen',
  ),
  
'ar' => array( ), // Hier ein leeres nur der Key da
  
'de' => array(
    
'deutsch',
    
'der',
    
'der',
    
'der',
  ),
); 
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 02.03.2009, 13:16  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

suchst du evtl nach natcasesort ??
rudygotya ist offline  
Alt 02.03.2009, 13:45  
Neuer Benutzer
 
Registriert seit: 02.03.2009
Beiträge: 10
JaYceE befindet sich auf einem aufstrebenden Ast
Standard

naja also klar dürfte man es verändern, allerdings hab ich es nun schonmal so weit mit for schleife, dass es zählt und alles richtig ausgibt.bis auf halt dass kommas implementiert werden...
wegen dem natcasesort, ich wüsste nich wie ich einbauen sollte darin. sehe den zusammenhang grade nicht
es gibt ein fenster mit einer textarea und absenden button in diese datei:


PHP-Code:
<?
$string 
trim($_POST['input']);// leere zeichenfelder vor
                                // dem eigentlichen string werden weggenommen
                                // ausserdem wird die variable input aus dem formular hier in
                                // die variable $string uebergeben
$string chop($string);        // leere zeichenfelder hinter dem eigentlichen string werden
                                // ebenfalls abgetrennt
$string stripslashes("$string");
echo 
"Eingabetext:<br>$string<br><br>"//Ausgabe des eingabetextes
$string strtolower($string);  // der gesamte string wird in kleinbuchstaben konvertiert



$unneeded = array (
      
'1' => '''2' => '',
      
'!' => '''3' => '',  
      
'?' => '''4' => '',
      
'.' => '''5' => '',  
      
',' => '''6' => '',
      
'-' => ' ''7' => '',
      
'"' => '''8' => '',
      
':' => '''9' => ''
      
';' => '''0' => '',       
      
'(' => ''
      
')' => '',
  );

  
$string strtr($string$unneeded); //es werden zeichen ersetzt, die in der ausgabe nicht vorkommen sollen
  
$string preg_replace("/( +)/"" "$string); //mehrere leerzeichen werden in eines umgewandelt
$parts explode(" "$string); // trennt die einzelnen worte innerhalb des strings voneinander

$i=-1;
$s=0;
foreach(
$parts as $part)
{
    
$part=trim($part);
    
$abrev substr($part02);
    
$test[1][]=$abrev;    
    
$test[2][]=$part;
    
$i++;
}


$x=0;

sort $test[1] );
sort $test[2] );


for(
$s;$s<=$i;$s++)
{
 
$result array_unique($test[1]);
 
   if (!empty(
$result[$s]))
   {
      echo 
"<br>";
      echo 
$result[$s].' - ';
   }
   
     
$needle $test[2][$s];
     
$count substr_count implode$test[2] ), $needle );    
     
$result2 array_unique($test[2]);  
    
    
$fordiffs[] = $test[2];
  
         
$diff =  abrev($fordiffs);
        
//$diff = strnatcasecmp( $diff[$s], $result[$s]); 
  
  
if (($count 1) &&(!empty($result2[$s]))) //wenns öfter als 1mal vorkommt und nicht leer is
  
{          
            for (
$counter=$s;$counter<=$i;$counter++)
            {
                if (!empty(
$result[$s]))
                    {
                        
$needle $result[$s];
                         
$comma substr_count implode$result2 ), $needle );      
                    }
            }
           echo 
$result2[$s].'('.$count.')';
            if (
$comma 1)
            {
                echo 
", ";    
            }
  }
    
 else if (!empty(
$result2[$s])) 
      {
            for (
$counter=$s;$counter<=$i;$counter++)
            {
                if (!empty(
$result[$s]))
                    {
                        
$needle $result[$s];
                         
$comma substr_count implode$result2 ), $needle );      
                    }
            }
          echo 
$result2[$s];    
            if (
$comma 1)
            {
                echo 
", ";    
            }
      }  
}




    function 
abrev ($fordiffs)
    {
    foreach(
$fordiffs as $part)
{
    
$abrev substr($part02);
    
$diff[]=$abrev;        
}
    
//$diff = array_unique($diff);  
    
return $diff;
    }


?>
JaYceE ist offline  
Alt 02.03.2009, 14:26  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

- trim entfernt Leerzeichen am Anfang und am Ende der Zeichenkette
für was dann chop?
PHP-Code:
$parts explode(" "$string); // trennt die einzelnen worte innerhalb des strings voneinander 
danach sind keine leerzeichen mehr in deinen strings.
nächster trim m.E. unnötig
Zitat:
ich habe ein array möchte von einer bestimmten stelle bis zum nächsten nicht leeren eintrag(keys sind trotzdem da) des arrays, die anzahl der bis dorthin ausgegebenen einträge(keys trotzdem da)eines anderen array herausfinden.
PHP-Code:
foreach ($var as $key=>$val) {
    echo 
$key[$val].'<br>';
    echo 
$key;

könnte da helfen

Zitat:
es soll ein sortieralgorhytmus sein wo nach den beiden anfangsbuchstaben der worte sortiert wird.
groß/kleinschreibung ignorieren, sortieren => natcasesort (manual angesehen?)
rudygotya ist offline  
Alt 02.03.2009, 14:53  
Neuer Benutzer
 
Registriert seit: 02.03.2009
Beiträge: 10
JaYceE befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
foreach ($var as $key=>$val) {
    echo 
$key[$val].'<br>';
    echo 
$key;

ja gut hiermit bekomme ich die keys des einen arrays, allerdings möchte ich ja zählen wieviele einträge kommen bis wieder eine ausgabe vorkommt in dem anderen array. und das natcasesort passt meiner meinung nach nicht rein, denn ich sortiere ja erstmal die gesamtheit beider arrays in alphabetische reihenfolge, wonach dann nur nach dem strich, bzw nur nach der jetzige ausgabe bis zur nächsten ausgabe des ersten arrays in dem zweiten array verkehrt herum sortiert wird.

und mein problem mit den kommas scheint mir grade einfach unlösbar, ich habe es bisher so dass gezählt wird wie oft ein eintrag des erst arrays(ersten 2 buchstaben) im zweit array(wörter) vorkommt. aber das klappt nich so richtig. es wird auch zb nach dem zweiten wort derselben gruppe ein komma ausgegeben obwohl nur 2 worte der gruppe vorkommen.
anders wird auch ein komma ausgegeben falls es nur ein wort gibt und das öfter vorkommt bspw.
te - test(3),
so soll das ja nich, sondern nur wenn danach noch ne ausgabe kommt. das is das große problem, ich denke mal dass alle worte der selben gruppe in ein array gehören, bloß wie? kann mir jemand helfen. quelltext hab ich gepostet

danke auf alle fälle schonmal für die bisherige unterstützung
JaYceE ist offline  
Alt 02.03.2009, 14:57  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Ich glaube wir sollten hier bei der Quelle der Arrays ansetzen, woher kommen die?
cycap ist offline  
Alt 02.03.2009, 15:03  
Neuer Benutzer
 
Registriert seit: 02.03.2009
Beiträge: 10
JaYceE befindet sich auf einem aufstrebenden Ast
Standard

aus einer textarea mit absenden button. also aus einem formular, anschließend wird der durch die textarea eingelesene string explodet und in ein zweidim. array getan, instanz eins die ersten 2 buchstaben, instanz zwei die gesamten worte. in der for-schleife (für ausgabe, zählen (und eigentlich auch zahl der benötigten kommas zählen)) wird das array der ersten instanz in ein eindimensionales übergeben und als unique gemacht (damit die buchstaben-gruppen nur einmal auftauchen.

das array der zweiten instanz kommt ebenfalls in ein eindimensionales wo die anzahl der worte gezählt wird und gegebenenfalls mit ausgegeben.
JaYceE ist offline  
Alt 02.03.2009, 15:11  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Ach du heilige Sch*** ... muss das so sein? Oder könnte man das Konzept der Eingabe auch ändern?
cycap ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] foreach mit Mehrdimensionalen Arrays serious-cool PHP Tipps 2009 2 24.02.2009 01:49
[Erledigt] Schwierigkeiten beim Vergleichen von 2 Arrays mathes PHP Tipps 2009 5 06.02.2009 12:05
JPG Vergleichen - anderer Ansatz wg. Performance cyberholic PHP-Fortgeschrittene 2 03.01.2009 14:15
[Erledigt] 2 arrays mit strstr() vergleichen schote PHP Tipps 2008 4 26.11.2008 17:30
Arrays sortieren, Bezeichnung, Preis Ticos PHP Tipps 2006 4 07.09.2006 19:37
Arrays vergleichen - Unterschiede löschen heohni PHP Tipps 2006 8 23.05.2006 18:07
zwei arrays vergleichen moose PHP Tipps 2006 1 06.04.2006 06:58
[Erledigt] 2 Arrays miteinander vergleichen PHP Tipps 2007 3 17.12.2005 16:54
Objektorientierter Zugriff auf Multidimensionale Arrays PHP-Fortgeschrittene 31 26.11.2005 21:46
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Arrays vergleichen PHP Tipps 2005-2 4 16.06.2005 15:41
Größe eines Arrays ermitteln itDieter PHP Tipps 2005 8 14.05.2005 18:10
2 Arrays vergleichen und unterschiede auslesen PHP Tipps 2005 6 25.02.2005 09:34
[Erledigt] Große Arrays vergleichen PHP-Fortgeschrittene 13 16.12.2004 21:52
zwei arrays miteinander vergleichen PHP Tipps 2004 6 01.09.2004 19:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php arrays vergleichen, php array vergleichen, zwei arrays vergleichen php, php wörter nach den ersten zwei buchstaben sortieren, http://www.php.de/php-einsteiger/52429-zwei-arrays-vergleichen-und-kommazahl-ermitteln.html, arrays vergleichen, komma vor bspw., php string mit array vergleichen, kommazahlen in worten, php kommazahlen vergleichen, php 2 arrays vergleichen, javascript kommazahlen vergleichen, kommazahl ermitteln, arrays string vergleichen php, \komma vor bspw\, php array vergleich, array kommazahlen, kommazahlen vergleichen php, php wenn string in array vergleich, explode array vergleichen php

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum