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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
FAQ Script PHP ansehen FAQ Script PHP

FAQ Script PHP is a simple knowledgebase script and you could use it as a Frequently Asked Question section on your website. It is written in PHP and MySQL.

14.01.2019 nevenov | Kategorie: PHP/ FAQ
Admidio Mitgliederverwaltung

Admidio ist eine kostenlose Online-Mitgliederverwaltung, die für Vereine, Gruppen und Organisationen optimiert ist. Sie besteht neben der Mitgliederverwaltung aus einer Vielzahl an Modulen (Foto-, Download-, Terminverwaltung), die in eine neue oder besteh

08.01.2019 webmaster52@ | Kategorie: PHP/ Groupware
 Alle PHP Scripte anzeigen

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