 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
08.03.2005, 15:56
|
#1
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Array-Problem
Hallo zsamme,
ich habe folgendes Problem:
2 Arrays
$Standort[0]=>Array("Name"=>"","Strasse"=>"","PLZ"=>"",...)
$Standort[1]=>Array("Name"=>"","Strasse"=>"","PLZ"=>"",...)
$Standort[2]=>Array("Name"=>"","Strasse"=>"","PLZ"=>"",...)
usw
$Entfernung[0]=>Array("PLZ"=>"","Entfernung"=>"")
$Entfernung[1]=>Array("PLZ"=>"","Entfernung"=>"")
$Entfernung[2]=>Array("PLZ"=>"","Entfernung"=>"")
Die Arrays sind so vorgegeben und können nicht geändert werden.
Nun durchlaufe ich das Array Standort und brauche dazu immer das Element aus Array2 mit der selben PLZ, um die Entfernung zu ermitteln.
Wie kann ich sozusagen die Arrays verknüpfen ? Gibt es vielleicht einen einfachen Weg, der mir mühsame Iterationen erspart ?
|
|
|
08.03.2005, 16:11
|
#2
|
|
TP-Moderator
Registriert seit: Jan 2004
Ort: Bayern, Regensburg
|
Also so als grober Ansatz würde mir da jetzt auch nur einfallen mit einer Schleife aus dem Array Entfernung die zugehörige PLZ zu suchen und dann die zugehörige Entfernung zu benutzen.
Eine andere Lösung als die Schleife fällt mir da jetzt nicht ein. Ich denke es muss zwangsweise jedes Element des Arrays durchsucht werden, bis halt die passende PLZ dabei ist. Also im schlimmsten Fall alle Elemente des Arrays.
Wenn jemand eine andere Lösung hat, mich würde sie auch interessieren!
|
|
|
08.03.2005, 16:46
|
#3
|
|
TP-Insider
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
|
mach doch ein grosses array draus.
PHP-Code:
for($i=0, $count=count($Standort); $i < $count; $i++):
$new_array[$i] = array_merge($Standort[$i], $Entfernung[$i]);
endfor;
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
|
|
|
08.03.2005, 16:52
|
#4
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
@horminator
Die Kausalität ist doch eine andere. Es sind nicht $Standort[0] mit $Entfernung[0] verknüpft.
Der Schlüssel, der beide Arrays verbindet, ist PLZ.
Dieser kann übrigens mehrfach in Array1 vorkommen, aber nur einmal in Array2.
Wenn ich die so zusammenpappe, nutzt mir das leider nix.
|
|
|
08.03.2005, 16:53
|
#5
|
|
TP-Insider
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
|
oder wenn die nicht uebereinstimmen:
PHP-Code:
foreach($Entfernung as $array):
$plz_array[$array['PLZ']] = $array['Entfernung'];
enforeach;
for($i=0, $count=count($Standort); $i<$count; $i++):
$Standort[$i]['Entfernung'] = $plz_array[$standort[$i]['PLZ']];
endfor;
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
|
|
|
08.03.2005, 16:54
|
#6
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Oyten
|
Ich mische mich mal ein weil ich ursprünglich das Problem hatte und mihc an Steffen gewandt habe.
Mein Ziel ist es ja ein großes Array zu machen.
Leider kann die Zuordnung
Code:
array_merge($Standort[$i], $Entfernung[$i]);
so nicht gemacht werden, weil der Index $i eben nicht stimmt.
Diese Zuordnung muss ja erst geschaffen werden.
Zur Zeit habe ich das wirklich über eine eigene Schleife gelöst, die ermittelt welche Entfernung zu einer PLZ gehört und diese dann in das erste Array einfügt.
Es müsste aber doch auch eleganter gehen, oder?
Code:
function get_entfernung($plz)
{
global $entfernung;
$ret=0;
$anz=sizeof($entfernung);
for ($i=0;$i<$anz;$i++)
{
if ($entfernung[$i]['plz']==$plz)
{
$ret=$entfernung[$i]['entfernung'];
break;
}
}
return $ret;
}
for ($i=0;$i<sizeof($standorte);$i++)
{
$standorte[$i]['entfernung']=get_entfernung($standorte[$i]['plz']);
}
|
|
|
08.03.2005, 16:56
|
#7
|
|
TP-Veteran
Registriert seit: Jun 2003
Ort: Aachen
|
erstmla kannst du statt for schleigen besser foreach benutzen...
ansonsten hab ich schon umständlicheres gesehen...
|
|
|
08.03.2005, 17:05
|
#8
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
hi Daniel, welcome on board 
|
|
|
08.03.2005, 17:06
|
#9
|
|
TP-Insider
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
|
Zitat:
|
erstmla kannst du statt for schleigen besser foreach benutzen...
|
who cares? der key ist immer numerisch, die for-schleife kaum komplizierter. die performance scheint gleich zu sein.
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
|
|
|
08.03.2005, 17:15
|
#10
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Oyten
|
Naja, es geht ja hier nicht darum die Schleife zu optimieren sondern grundsätzlich um die Frage wie man 2 Arrays miteinander verknüpfen kann, wenn sich der eindeutige Schlüssel als Unter-Key im Array befindet.
Bei kleinen Datenmengen klappt die obige Variante ja ganz gut, aber was ist wenn ich mal 30.000 Zuordnungen machen muss. Da muss es doch eine bessere Variante der Zuordnung geben - hoffe ich zumindest. *g*
@Steffen
Danke für den Willkommensgruß. *freu*
|
|
|
08.03.2005, 17:18
|
#11
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
ist verflixt schwierig.
Ich hatte schon daran gedacht, das es irgendeine Array-Funktion gibt, die man anwenden kann wie z.B. array_intersect_assoc, komm aber nicht auf einen grünen Zweig, da hier das zu verknüpfende Element erst an 2. Stelle steht.
Kann halt nicht so gut mehrdimensional denken 
|
|
|
08.03.2005, 17:32
|
#12
|
|
TP-Insider
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
|
mal davon abgesehen, dass ich mich zwei mal verschrieben habe, funktioniert meine variante einwandfrei - danach kannst du immer auf Standort[$i]['Entfernung'] zugreifen.
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
|
|
|
08.03.2005, 17:39
|
#13
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
Zitat:
|
Zitat von St@eff.en
Kann halt nicht so gut mehrdimensional denken 
|
... kann ich auch nicht. aber wenn ich mir jetzt keinen knoten ins hirn gemacht habe, dann koennte das hier funzen:
PHP-Code:
for($i=0; $i<count($Standort); $i++) {
for($a=0; $a<count($Entfernung); $a++) {
($Standort[$i]['PLZ'] == $Entfernung[$a]['PLZ']) ?
echo $Entfernung[$a]['Entfernung'] : '';
}
}
gruss
hardy
EDIT
hehe ... da ist noch wer auf ne aehnliche idee gekommen!
|
|
|
08.03.2005, 20:55
|
#14
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
vielen Dank, ihr könnt die Hirne wieder entknoten 
Das ist schon verdammt unübersichtlich, und mit einer einfachen array-function gehts wohl auch nicht.
Ich hatte irgendwie im Kopf, das man keys und werte austauschen kann, das funktioniert aber nur bei einfachen assoziativen arrays. Sobald es um grössere Strukturen geht wie hier, muss man das wohl in einer Funktion lösen.
Ich finde es auch sehr interressant, wie unterschiedlich die Lösungswege sein können 
|
|
|
08.03.2005, 21:21
|
#15
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
hast du das problem nun geloest? koennen eigentlich auch fuer eine plz mehrere entfernungen in frage kommen?
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
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.
HTML-Code ist aus.
|
|
|
| |