php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-05-2007, 20:39
bacca
 Newbie
Links : Onlinestatus : bacca ist offline
Registriert seit: May 2007
Beiträge: 3
bacca ist zur Zeit noch ein unbeschriebenes Blatt
Standard Multidimensionale Arrays

Hi

ich stehe gerade auf dem Schlauch und komme nicht weiter.
Vielleicht könnt ihr mir ja helfen ?

Ich würde gerne einen multidimensionalen Array nach einem Key durchsuchen und
jedesmal wenn ich diesen Key finde, in einen neuen Array schreiben.
So dass ich am Ende einen einfachen Array mit den alten Werten als Keys habe.

Das durchsuchen klappt schon ganz gut, nur leider bekomme ich keinen einfachen Array aus meiner Funktion.
Hat jemand nen Tipp was ich falsch mache ?

PHP-Code:
function find_logins_in_array($haystack$needle){    
    foreach(
$haystack as $key => $val) {        
        if (
is_array($val)){
            
find_logins_in_array($val$needle);
        } else {
            if (
$key == $needle){
                echo 
"key: $key und val: $val<br />";
                
$result[] = $val;
            }
        }
    }
    return 
$result;

Vielen Dank,
bacca
Mit Zitat antworten
  #2 (permalink)  
Alt 29-05-2007, 20:52
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das liegt daran, dass $result für jede instanz einer rekursionsebene neu belegt wird. was du damit erreichst, ist, dass du letzten endes nur die treffer der ersten ebene deines haystacks zurücklieferst.

du hast zwei möglichkeiten:

1. das $result muss per referenz als parameter an die funktion übergeben werden, so auch in jedem rekursiven aufruf. anschließend erzeugst du an der stelle, an der du die funktion brauchst, ein leeres array, übergibst es an die funktion und hast darin die ergebnisse.

2. wie du siehst, schmeißt du in der vierten zeile den rückgabewert weiterer rekursionsaufrufe einfach weg. an dieser stelle könntest du sie stets aufgreifen und ersteinmal in das aktuelle $result hineinschreiben, etwa mit array_merge.

erstere könnte ein wenig performanter sein.

übrigens, was sind das für daten? mich wundert, dass man keys in einem verschachtelten array durchsuchen möchte. kommen sie aus der db? das sieht eher nach einem design fehler aus...
Mit Zitat antworten
  #3 (permalink)  
Alt 29-05-2007, 21:48
bacca
 Newbie
Links : Onlinestatus : bacca ist offline
Registriert seit: May 2007
Beiträge: 3
bacca ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wow. das ging ja schnell

also erstmal vielen Dank für deine Antwort.
Leider habe ich das immer noch nicht so richtig verstanden.

Das die Neubelegung von $result bei jeder Rekursion ein Problem sein könnte habe ich mir auch schon gedacht.
Und auch daran der Funktion einen Array mitzugeben, den sie füllen kann.
Aber auch da mache ich wohl was falsch.

Hier nochmal die Funktion:
PHP-Code:
function find_logins_in_array($haystack$needle$fillarray){    
    foreach(
$haystack as $key => $val) {        
        if (
is_array($val)){
            
find_logins_in_array($val$needle$fillarray);
        } else {
            if (
$key == $needle){
                
$fillarray[] = $val;
            }
        }
    }
    return 
$fillarray;

Die Funktion wird folgendermaßen aufgerufen:
PHP-Code:
$einarray = array();
$logins find_logins_in_array($params['symbol'], 'user'$einarray); 

Das ganze Problem mit den Daten ist folgendes.
Mein CMS übergibt meinem smarty Template einen Array.
In diesem Array sind eine Menge Daten, die das Template braucht um zum Beispiel eine Blog-Übersicht anzuzeigen.
In diesem Array stehen jetzt auch die Login Namen meiner User.
Und die möchte ich gerne durch ihre Nicks ersetzen.

Da ich meinen Code vom Quellcode des CMS trennen muss, kann ich diese Login/Nick Umsetzung nur im Template vornehmen.
Deswegen diese komische Konstruktion.

Lieben Gruß,
bacca
Mit Zitat antworten
  #4 (permalink)  
Alt 29-05-2007, 21:54
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von penizillin
das $result muss per referenz als parameter an die funktion übergeben werden, so auch in jedem rekursiven aufruf.
google mal nach "by reference".
Mit Zitat antworten
  #5 (permalink)  
Alt 29-05-2007, 22:10
bacca
 Newbie
Links : Onlinestatus : bacca ist offline
Registriert seit: May 2007
Beiträge: 3
bacca ist zur Zeit noch ein unbeschriebenes Blatt
Standard

doppelt wow

Jetzt gehts. Was so ein kaufmänisches Und so zu bewirken mag...

Vielen Dank. Wieder was gelernt.


Lieben Gruß,
bacca
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:31 Uhr.