Antworten auf deine Fragen:
Neues Thema erstellen

Durchsuchen eines Arrays aber mehrere Rückgabewerte?

ap1

Grafik/Web

Hi Leute

ist es möglich einen Array zu durchsuchen und dabei mehr als einen Rückgabewert zu erhalten?

Ich erfinde mal ein Beispiel!
Etwa:
Code:
   [moebel] => Array
        (
            [1] => Array 
                  (
                  [name] => Spuehle
                  [kosten] => 2500
                  [alter] => 3
                  )
            [2] => Array 
                  (
                  [name] => Tisch
                  [kosten] => 50
                  [alter] => 1
                  )
            [3] => Array 
                  (
                  [name] => Lampe
                  [kosten] => 80
                  [alter] => 1
                  )
            [4] => Array 
                  (
                  [name] => Vorhangstange
                  [kosten] => 5
                  [alter] => 1
                  )
            [5] => Array 
                  (
                  [name] => Schrank
                  [kosten] => 3500
                  [alter] => 1
                  )
            [6] => Array 
                  (
                  [name] => Schreibtisch
                  [kosten] => 500
                  [alter] => 1
                  )
            [7] => Array 
                  (
                  [name] => Sofa
                  [kosten] => 500
                  [alter] => 1
                  )
            [8] => Array 
                  (
                  [name] => Fernseher
                  [kosten] => 800
                  [alter] => 1
                  )
         )
Ich möchte nun die Möbel durchsuchen,
und zwar nach dem String "S"! Erstmal soll er nicht
auf Groß/Kleinschreibung achten - bis jetzt tut er das
auch nicht also so wie ichs mach ;)! Dann anschließend soll
er mir die Möbel-"ID" zurückgeben und eventuell weitersuchen!
Denn mit S würde er ja schließlich: 1,2,4,5,6,7,8 finden!

Mit meiner Funktion sucht er bis 8 durch... Nur gibt er mir nur 8 zurück! Wo ist der Fehler?


Benutze diese Funktion (mit strtolower wegen Großkleinschreibung)
PHP:
function array_find($needle, $haystack, $search_keys = false) {
    if(!is_array($haystack)) return false;
    $needle = strtolower($needle);
    foreach($haystack as $key=>$value) {
        $key = strtolower($key);
        $value = strtolower($value);
        $what = ($search_keys) ? $key : $value;
        if(strpos($what, $needle)!==false) { return $key; }
    }
    return false;
}
Wie geht das?

lg andi
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Durchsuchen eines Arrays aber mehrere Rückgabewerte?

Du erstellst dir ein Array, dass die gefundenen Keys speichert und gibst das statt zurück. Also anstelle von
PHP:
return $key;
schiebst du dort den Key in das Ergebnis-Array.

Edit: In den Kommentaren von array_search hat jemand genau sowas gemacht: http://www.php.net/manual/de/function.array-search.php#88465.

Duddle
 
Zuletzt bearbeitet:

sh0ck

PST-SURVIVOR

AW: Durchsuchen eines Arrays aber mehrere Rückgabewerte?

hallo.


die gefundenen einträge in einem array speichern lassen und dieses zurückgeben
PHP:
function array_find($needle, $haystack, $search_keys = false) {
    if(!is_array($haystack)) return false;
    $needle = strtolower($needle);

    $stack = array();

    foreach($haystack as $key=>$value) {
        $key = strtolower($key);
        $value = strtolower($value);
        $what = ($search_keys) ? $key : $value;
        if(strpos($what, $needle)!== false) {
                 array_push($stack, $key);
         }
    }
    return $stack;
}

bin aber totaler anfänger, aber müsste eigentlich so in etwa funktionieren :)
// edit: duddle war schneller, aber schön zu wissen, dass ich den richtigen gedankensprung hatte.
 

netbandit

Aktives Mitglied

AW: Durchsuchen eines Arrays aber mehrere Rückgabewerte?

Willst Du nur 'name' durchsuchen sollte das hier helfen
PHP:
while(list($id, $v)=each($moebel))
      {
      $erg=preg_match('/s/i', $v['name']);
      if($erg==1)echo $id . ',';
}
€: Soll die Suche in allen dreien durchgeführt werden, könnte preg_greb weiterhelfen:
PHP:
while(list($id, $v)=each($moebel))
      {
      $erg=preg_grep('/s/i', $v);
      if(count($erg)==1) echo $id . ', ';
}
 
Zuletzt bearbeitet:

ap1

Grafik/Web

AW: Durchsuchen eines Arrays aber mehrere Rückgabewerte?

Perfekt!

Vielen vielen Dank an alle!
Ich darf einfach nicht per return gleich aufhören ;)

Funktioniert!
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben