AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Mehrdimensionales Array durchsuchen
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Mehrdimensionales Array durchsuchen

Ein Thema von Wuaegner · begonnen am 13. Apr 2006 · letzter Beitrag vom 13. Apr 2006
Antwort Antwort
Seite 2 von 2     12   
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#11

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 17:39
Stimmt ^^ Fehler von meiner Seite, sorry!


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#12

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 17:40
es klappt, vielen Danke.
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#13

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 17:59
sind es immer 3 Dimensionen?

möchtest du alle ergebnisse oder nur das erste?

Code:
function searchrec($a, $keys, $v) {
  $res = array ();
  foreach ($a as $key=>$ar) {
    $tkeys = $keys;//?
    $tkeys[] = $key;
    if (is_array($ar)) {
      $res = array_merge(searchrec($ar,$tkeys,$v),$res);
    } else {
      if ($ar==$v) {
        $res[]=implode(',',$tkeys);
      }
    }
  }
  return $res;
}

function search($a, $v) {
  return searchrec($a,$k,$v);
}
das findet alles in einem array beliebiger tiefe.
eventuell noch etwas "ungeschickt" da wo das fragezeichen ist...aber es funzt

das ganze gibt nen array zurück der alle ids der gefundenn sachen beinhaltet...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#14

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 19:07
Nunja, foreach() ist nett, hier aber der falsche Ansatz.
Wenn er wissen will, WO sich dieser Datensatz befindet, muss es über for() laufen

Code:
function FindData($aArray, $aData)
{
    $aRes = Array();

    for($i = 0; $i <= count($aArray); $i++)
    {
        for($j = 0; $j <= count($aArray[$i]); $j++)
        {
            for($k = 0; $k <= count($aArray[$i][$j]); $k++)
            {
                if($aArray[$i][$j][$k] == $aData) { $aRes[] = strval($i).strval($j).strval($k); }   
            }           
        }
    }

    return $aRes;
}
Edit: Das läuft jetzt über 3 Ebenen. Lässt sich wie oben natürlich auch für n Ebenen umbauen

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#15

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 19:12
Zitat von Airblader:
Nunja, foreach() ist nett, hier aber der falsche Ansatz.
Wenn er wissen will, WO sich dieser Datensatz befindet, muss es über for() laufen
Falsch! Dein Beispiel funktioniert nur, wenn das array mit integern indexiert ist. Bei so einem Array:
Code:
$foo = array(
  'foo' => 'bar',
  'bar' => 'foo'
);
Kommst du nur ueber array_keys() bzw. array_values() oder eben einer foreach-Schleife an Index und Wert

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#16

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 19:19
Zitat von alcaeus:
Zitat von Airblader:
Nunja, foreach() ist nett, hier aber der falsche Ansatz.
Wenn er wissen will, WO sich dieser Datensatz befindet, muss es über for() laufen
Falsch! Dein Beispiel funktioniert nur, wenn das array mit integern indexiert ist. Bei so einem Array:
Code:
$foo = array(
  'foo' => 'bar',
  'bar' => 'foo'
);
Kommst du nur ueber array_keys() bzw. array_values() oder eben einer foreach-Schleife an Index und Wert

Greetz
alcaeus
ich habe es mit einem assoziativen getestet!!!

du kannst dich gerne selber hier überzeugen

Edit:
Nach nochmaligem lesen deines Posts fällt mir auf das du ja gesagt hast das es mit foreach GEHT.
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#17

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 19:34
Zitat von Airblader:
Nunja, foreach() ist nett, hier aber der falsche Ansatz.
Wenn er wissen will, WO sich dieser Datensatz befindet, muss es über for() laufen
Eigentlich nicht, immerhin durchläuft er jedes Element 1 mal, durchgeht alle Elemente und der Unterschied zu einer For-Schleife in diesem Fall ist der, dass hier keine Angabe zu Start und Ende gemacht werden muss. In der Foreach-Schleife wird schließlich auch die Position gespeichert.

Eine weitere Möglichkeit wäre noch gewesen, das Ganze mit einer While-Schleife zu machen:
Code:
while (each($array)) {
  // Quelltext
}
Wobei mir diese Möglichkeit nicht gefällt.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#18

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 19:47
Nun gut, aber im Eröffnungspost war von Zahlorientierten Arrays die Rede, und mit foreach() kann man nunmal nicht auslesen, im wievielten Index man sich befindet (es sei denn, man lässt nebenher auch noch eine Variable inkrementieren )

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#19

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 19:49
Zitat von Airblader:
Nun gut, aber im Eröffnungspost war von Zahlorientierten Arrays die Rede, und mit foreach() kann man nunmal nicht auslesen, im wievielten Index man sich befindet (es sei denn, man lässt nebenher auch noch eine Variable inkrementieren )

air
Aber sicher.
Beweis hier

geht sowohl mit assoziativen als auch mit zahlen...und ist letztendlich auch nur ein foreach-konstrukt

Edit:
Schon wieder Mistverstanden
Naja, tatsache ist das die Problemstellung mit foreach einwandfrei gelöst werden kann...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#20

Re: [PHP] Mehrdimensionales Array durchsuchen

  Alt 13. Apr 2006, 19:53
Zitat von Airblader:
Nun gut, aber im Eröffnungspost war von Zahlorientierten Arrays die Rede, und mit foreach() kann man nunmal nicht auslesen, im wievielten Index man sich befindet (es sei denn, man lässt nebenher auch noch eine Variable inkrementieren )
Was interessiert mich der wievielte Index, wenn ich mein Array nicht mit Integern indiziere? Ausserdem haelt foreach() auch noch die Reihenfolge des Arrays ein, schliesslich gibts auch sowas:
Code:
$foobar = array(
  1 => 0,
  0 => 1
);
foreach ($foobar as $key => $value) gibt es eben in der richtigen Reihenfolge zurueck, waehrend eine for-Schleife immer nur in die Richtung arbeitest, in der du sie programmierst.

Aber so langsam werden wir OT

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz