+ Antworten
Ergebnis 1 bis 13 von 13

Thema: String in Array suchen und alle Schlüssel ausgeben - Welche Funktion?

  1. #1
    TP-Member Floddr ist auf einem guten Weg
    Registriert seit
    Apr 2010
    Beiträge
    44

    String in Array suchen und alle Schlüssel ausgeben - Welche Funktion?

    Hallo!

    Ich habe php.net in der letzten Stunde studiert um für folgende Situation die Richtige Funktion zu benutzen. Allerdings möchte nichts so wirklich funktionieren.

    Ich habe ein Array, das wie folgt aussieht:

    PHP-Code:
    $array[0] = '';
    $array[1] = 'aaaaa';
    $array[2] = 'abcde';
    $array[3] = 'vwxyz'
    ... und so weiter...

    Nun möchte ich, dass mir die Schlüssel zu allen Arrays ausgegeben werden, in denen 'a' steckt.
    Also müssten 1 und 2 ausgegeben werden.

    Doch weder array_search() noch array_keys() funktionieren hierfür. Kann mir jemand einen Tipp geben?

  2. #2
    TP-Supporter chorn bringt sich richtig ein Avatar von chorn
    Registriert seit
    Apr 2008
    Ort
    Verden
    Beiträge
    396

  3. #3
    TP-Supporter Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Avatar von Bruecksen
    Registriert seit
    Mar 2002
    Ort
    Stuttgart
    Beiträge
    370
    Hallo Floddr,

    array_keys ist doch genau dir Richtige Funktion dafür laut Doku. Wie hast du es denn damit probiert? Vielleicht solltest du dein Array mal assoziativ aufbauen, sollte eigentlich kein unterschied machen aber in allen Beispielen die ich gesehen habe war dies so. Folgendes ist ungetestet sollte jedoch funktionieren:
    PHP-Code:
    <?php

    $array1 
    = array(
       
    => "",
       
    => "aaaaa",
       
    => "abcde",
       
    => "vwxyz");

    // find keys
    foreach (array_keys($array1"a") as $key)
       print 
    "$key";

    ?>
    siehe hier

    Viele Grüße
    Matthias.
    http://www.bruecksen.de


  4. #4
    TP-Veteran max.m lebt für das TP und seine User max.m lebt für das TP und seine User max.m lebt für das TP und seine User max.m lebt für das TP und seine User max.m lebt für das TP und seine User max.m lebt für das TP und seine User Avatar von max.m
    Registriert seit
    Dec 2005
    Ort
    Stuttgart
    Beiträge
    1.955
    Zitat Zitat von Bruecksen Beitrag anzeigen
    Folgendes ist ungetestet sollte jedoch funktionieren:
    Glaube ich nicht, array_keys berücksichtigt soweit ich weiß keine Teilstrings. aaaaa würde gefunden werden.

  5. #5
    TP-Supporter Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Avatar von Bruecksen
    Registriert seit
    Mar 2002
    Ort
    Stuttgart
    Beiträge
    370
    ah ok. das kann natürlich sein und kann man natürlich auch aus der Doku so interpretieren.
    search_value: Wenn angegeben, werden nur Schlüssel mit diesen Werten zurückgegeben.
    schade. Wenn sie schon die Suche per Parameter ermöglichen, warum dann nicht gleich richtig. Dann musst du das wohl wie chorn vorgeschlagen hat implementieren.

    Viele Grüße
    Matthias.
    http://www.bruecksen.de


  6. #6
    TP-Member Floddr ist auf einem guten Weg
    Registriert seit
    Apr 2010
    Beiträge
    44
    Vermutlich ganz gut. Nur habe ich mit solchen Sachen ehrlich gesagt noch nie gearbeitet. :S
    Mein Ansatz sieht nun so aus...
    PHP-Code:
    $array[0] = ''
    $array[1] = 'aaaaa'
    $array[2] = 'abcde'
    $array[3] = 'vwxyz';  

    foreach (
    $array as $blub) {
    $dort strpos ($blub'a')
    echo 
    $dort
    ... nur wird hier vermutlich null ausgegeben, weil er ja in $array[3], dem letzten, an keiner Position ein a findet.
    Strpos gibt doch vermutlich nur die erste Position aus. Ich brauche aber alle.

  7. #7
    TP-Supporter Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Avatar von Bruecksen
    Registriert seit
    Mar 2002
    Ort
    Stuttgart
    Beiträge
    370
    hmm naja so schwer ist das doch nicht.

    PHP-Code:
    $array[0] = ''
    $array[1] = 'aaaaa'
    $array[2] = 'abcde'
    $array[3] = 'vwxyz';  

    foreach (
    $array as $key => $value) {
       
    $pos strpos ($value'a');
       if (
    $pos !== false) {
        echo 
    $key;
       }

    ungetestet.

    Viele Grüße
    Matthias.
    http://www.bruecksen.de


  8. #8
    TP-Member Floddr ist auf einem guten Weg
    Registriert seit
    Apr 2010
    Beiträge
    44
    Funktioniert leider nicht. Erzeugt als Ausgabe...
    Code:
    00

  9. #9
    TP-Supporter Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Avatar von Bruecksen
    Registriert seit
    Mar 2002
    Ort
    Stuttgart
    Beiträge
    370
    hatte da noch einmal was geändert. schau es dir jetzt noch mal an. sollte nun passen. In der vorigen version habe ich $pos ausgegeben was natürlich schwachsinn ist.

    Viele Grüße
    Matthias.
    http://www.bruecksen.de


  10. #10
    TP-Member Floddr ist auf einem guten Weg
    Registriert seit
    Apr 2010
    Beiträge
    44
    Uiuiui... 12 (eins und zwei) wird ausgegeben. Das ist das, was ich wollte
    Danke.

  11. #11
    TP-Member Floddr ist auf einem guten Weg
    Registriert seit
    Apr 2010
    Beiträge
    44
    Ich habe mal etwas rumgespielt...

    PHP-Code:
    $array[0] = ''
    $array[1] = 'aaaaa'
    $array[2] = 'abcde'
    $array[3] = 'vwxyz';
    $array[4] = '12345'
    $array[5] = 'edcba';
       
    foreach (
    $array as $key => $value) {
       
    $pos strpos ($value'a');
       if (
    $pos !== false) { 
       
    $arraycheck[$key] = $key;
       } 
        for(
    $i 1$i count($array); $i++){
          if (
    $arraycheck[$i] > 0) { 
            echo 
    $i.$array[$i].'<br>';
        }
        }  


    Beabsichtigt war folgende Ausgabe:
    Code:
    1aaaaa
    2abcde
    5edcba
    In allen ist 'a' enthalten.

    Tatsächlich erscheint allerdings folgendes:
    Code:
    1aaaaa
    1aaaaa
    2abcde
    1aaaaa
    2abcde
    1aaaaa
    2abcde
    1aaaaa
    2abcde
    1aaaaa
    2abcde
    5edcba
    Wie kommen die ersten 9 Zeilen zustande?

  12. #12
    TP-Supporter chorn bringt sich richtig ein Avatar von chorn
    Registriert seit
    Apr 2008
    Ort
    Verden
    Beiträge
    396
    Du gibst für jede Suchoperation die kompletten Suchergebnisse aus. Siehst du auch gleich an der Klammersetzung. foreach{ ... for{... Mir erschliesst sich auch nicht, warum du ein Mal foreach und ein Mal for benutzt.

  13. #13
    TP-Supporter Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Bruecksen hilft, wo's geht Avatar von Bruecksen
    Registriert seit
    Mar 2002
    Ort
    Stuttgart
    Beiträge
    370
    Hey Floddr,

    so geht das nicht: LTFB
    In deinem ersten Lösungsansatz haben schon hier und da Klammern und Semikolons gefehlt. Das hier ist auch wieder ein Klammer Problem. Auf die Lösung solltest du jetzt jedoch mal selbst kommen. Sauberen Code mit sauberen Einrückungen und dir klar machen wann welche Schleife jetzt durchlaufen wird und wann sie wirklich durchlaufen werden soll und tada, du hast ein Funktionierendes Skript

    edit: man bin ich langsam

    Viele Grüße
    Matthias.
    http://www.bruecksen.de


+ Antworten

Ähnliche Themen

  1. Regex: Zusammenhängenden String suchen und ersetzten
    Von Stuck Mojo im Forum Traum-Dynamik
    Antworten: 9
    Letzter Beitrag: 26.09.2007, 10:00
  2. zahlen als array-schlüssel
    Von alexf812 im Forum Traum-Dynamik
    Antworten: 5
    Letzter Beitrag: 31.03.2006, 12:45
  3. array-Schlüssel ändern
    Von alexf812 im Forum Traum-Dynamik
    Antworten: 35
    Letzter Beitrag: 21.09.2005, 17:35
  4. String in String suchen
    Von HeinsMarcel im Forum Traum-Dynamik
    Antworten: 3
    Letzter Beitrag: 28.07.2005, 21:11
  5. Array in String ausgeben, Denk mal !
    Von NeTHippie im Forum Traum-Dynamik
    Antworten: 7
    Letzter Beitrag: 10.12.2002, 11:27

Stichworte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51