| 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! Post your PHP questions here! |
 |
|

01-09-2010, 01:25
|
|
fair2
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Germany
Beiträge: 45
|
|
Multidimensionales Array auslesen
Hallo Leute,
folgendes Array
Code:
Array ( [anrede] => Array (
[BI2009] => Array ( [0] => Herr [1] => Herr [2] => Herr )
[O76010] => Array ( [0] => Herr [1] => Herr )
[06W011F] => Array ( [0] => Herr [1] => Herr [2] => Herr ) ) [titel] => Array (
[BI2009] => Array ( [0] => [1] => [2] => )
[O76010] => Array ( [0] => [1] => )
[06W011F] => Array ( [0] => [1] => [2] => ) ) [vrname] => Array (
[BI2009] => Array ( [0] => Max [1] => Franz [2] => Franz )
[O76010] => Array ( [0] => Franz [1] => Elfriede )
[06W011F] => Array ( [0] => Max [1] => Otto [2] => Martin ) ) [nname] => Array (
[BI2009] => Array ( [0] => Mustermann [1] => Hansen [2] => Maier )
[O76010] => Array ( [0] => Otto [1] => Hansen )
[06W011F] => Array ( [0] => Hansen [1] => Hansen [2] => Maier ) ) [phone] => Array (
[BI2009] => Array ( [0] => [1] => [2] => )
[O76010] => Array ( [0] => [1] => )
[06W011F] => Array ( [0] => [1] => [2] => ) )
Am ende muss folgendes Ausgegeben werden.
Beispiel:
PHP-Code:
$id = BI2009 $anrede = Herr $titel = ""; $vrname = "Max"; $nname = "Mustermann"; $phone = "";
PHP-Code:
$i = 0; foreach($_POST["anrede"] as $anrede) { $new_array = array(); $i = $i++;
$new_array = array_shift($new_array,$anrede); }
nun sollte ich alle daten anhand der ID bekommen also wieder mit einer neuen foreach ---
PHP-Code:
$i = 0; foreach($new_array as $ID) { $i = $i++;
$return .= $ID;
}
aber das will nicht so recht .. kann auch sein das ich mich ein bisschen verlaufen habe
jeweils pro Datensatz und pro Array
Geändert von fair2 (01-09-2010 um 02:09 Uhr)
Grund: da hab ich glatt was vergessen
|

01-09-2010, 01:35
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
soll ich den Thread sofort löschen oder willst du noch eine Chance haben, eine vernünftige Frage laut Forenregeln draus zu machen und deine bisherigen eigenen Ansätze zu zeigen. Du erwartest doch bitte nicht, dass dir hier jemand die Lösung auf dem Silbertablett serviert.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

01-09-2010, 02:03
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Danke für die Anpassung. Jetzt bin ich auch bereit, dir zu helfen. Eine Bitte noch: jeglichen Code in Code-Tags packen.
Es heißt $_POST, nicht $_POS. Wenn PHP dir das nicht selbst gesagt hat, Error-Reporting aufdrehen (ist auch eine Forenregel).
Nutze die Assoziativität von Arrays in PHP, um die zusammengehörenden Daten zu gruppieren. Das was ich damit meine, könnte dir evtl. der Blogeintrag zum Thema Gruppenwechsel näher illustrieren.
Wenn du das anwendest, könnte das Ergebnisarray dann so aussehen:
PHP-Code:
Array ( [0] => Array ( [id] => BI2009 [index] => 0 [anrede] => Herr [titel] => [vrname] => Max [nname] => Mustermann [phone] => ) [1] => Array ( [id] => BI2009 [index] => 1 [anrede] => Herr [titel] => [vrname] => Franz [nname] => Hansen [phone] => ) [2] => Array ( [id] => BI2009 [index] => 2 [anrede] => Herr [titel] => [vrname] => Franz [nname] => Maier [phone] => ) [3] => Array ( [id] => O76010 [index] => 0 [anrede] => Herr [titel] => [vrname] => Franz [nname] => Otto [phone] => ) [4] => Array ( [id] => O76010 [index] => 1 [anrede] => Herr [titel] => [vrname] => Elfriede [nname] => Hansen [phone] => ) [5] => Array ( [id] => 06W011F [index] => 0 [anrede] => Herr [titel] => [vrname] => Max [nname] => Hansen [phone] => ) [6] => Array ( [id] => 06W011F [index] => 1 [anrede] => Herr [titel] => [vrname] => Otto [nname] => Hansen [phone] => ) [7] => Array ( [id] => 06W011F [index] => 2 [anrede] => Herr [titel] => [vrname] => Martin [nname] => Maier [phone] => ) )
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (01-09-2010 um 02:08 Uhr)
|

01-09-2010, 02:10
|
|
fair2
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Germany
Beiträge: 45
|
|
okay ich werde es mal versuchen,
scheint nicht zu gehen da die IDS und die anzahl der Felder immer verschieder sein können...
PHP-Code:
<? if($_POST) { $array = array(); foreach ($_POST as $row) { $array[$row["anrede"]][$row["rev_id"]][] = $row; } } ?>
<form action="" method="post"> <input type="text" name="anrede[BI2009][]" /> <input type="text" name="anrede[BI2009][]" /> <input type="text" name="anrede[BI2009][]" /> <input type="text" name="anrede[BI2008][]" /> <input type="text" name="anrede[BI2008][]" /> <input type="text" name="anrede[BI2008][]" /> <input type="text" name="anrede[BI2008][]" /> </form>
Geändert von fair2 (01-09-2010 um 02:15 Uhr)
Grund: noch was ..
|

01-09-2010, 02:23
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Den Code kenne ich
Du musst den schon auf dein Problem anpassen, das ist nur ein Beispiel und die Array-Indizes beziehen sich auf meine Historytabelle. Daher kann es nicht funktionieren.
Du brauchst 3 ineinander geschachtelte foreach-Schleifen (die ausführliche Notation mit Key und Value). In der innersten hast du alle Daten, die du brauchst und diese schreibst du dann nach der Gruppenwechselmethode in ein neues Array.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

01-09-2010, 02:27
|
|
fair2
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Germany
Beiträge: 45
|
|
Code:
Array ( [BI2009] => Array ( [0] => Hallo [1] => Ich [2] => bin ) [BI2008] => Array ( [0] => der [1] => test [2] => ob [3] => geht )
soweit habe ich es
Code:
Array ( [anrede] => Array ( [BI2009] => Array ( [0] => Hallo [1] => Ich [2] => bin ) [BI2008] => Array ( [0] => der [1] => test [2] => ob [3] => geht ) ) [s] => safe )
|

01-09-2010, 02:33
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ach, egal, hier hast du es.
PHP-Code:
<?php $data = array( "anrede" => array( "BI2009" => array("Herr", "Herr", "Herr"), "O76010" => array("Herr", "Frau"), // hab mir mal erlaubt, aus der Elfriede eine Frau zu machen "06W011F" => array("Herr", "Herr", "Herr") ), "titel" => array( "BI2009" => array("", "", ""), "O76010" => array("", ""), "06W011F" => array("", "", "") ), "vrname" => array( "BI2009" => array("Max", "Franz", "Franz"), "O76010" => array("Franz", "Elfriede"), "06W011F" => array("Max", "Otto", "Martin") ), "nname" => array( "BI2009" => array("Mustermann", "Hansen", "Maier"), "O76010" => array("Otto", "Hansen"), "06W011F" => array("Hansen", "Hansen", "Maier") ), "phone" => array( "BI2009" => array("", "", ""), "O76010" => array("", ""), "06W011F" => array("", "", "") ) ); $result = array(); foreach ($data as $field => $idvalues) { foreach ($idvalues as $id => $values) { foreach ($values as $index => $value) { // \x01 ist nur ein Trennzeichen, das mit sehr hoher Wahrscheinlichkeit // nicht selbst in $id oder $index vorkommt $result[$id . "\x01" . $index]["id"] = $id; $result[$id . "\x01" . $index]["index"] = $index; $result[$id . "\x01" . $index][$field] = $value; } } } $result = array_values($result); header("Content-Type: text/plain; charset=utf-8"); print_r($result); ?>
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (01-09-2010 um 02:35 Uhr)
|

01-09-2010, 02:40
|
|
fair2
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Germany
Beiträge: 45
|
|
Hammer .. das geht ja
ICH DANKE DIR VIELMALS ... da kann man ja mal früher schlafen gehen...
|

01-09-2010, 02:43
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Bitte versuch aber (meinetwegen auch erst nach dem Schlafen) zu verstehen, warum das ja geht und was es genau und warum macht.
Gute Nacht.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

01-09-2010, 03:02
|
|
fair2
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Germany
Beiträge: 45
|
|
verdammt nun kommt das andere Problem
in dem Formular werden auch Daten welche nicht als [] definiert werden weitergegeben...
nun wollte ich mit array_merge die nötigen arrays in ein neues array schreiben aber er macht das nicht ...grr
$data = array();
$data = array_merge($data,$_POST["anrede"],
$_POST["titel"],$_POST["vrname"],$_POST["nname"],$_POST["phone"]);
|

01-09-2010, 03:09
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Versteh ich nicht. Was steht genau in $_POST?
Code in Code-Tags!
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

01-09-2010, 03:13
|
|
fair2
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Germany
Beiträge: 45
|
|
Code:
Array
(
[anrede] => Array
(
[BI3101] => Array
(
[0] => Herr
[1] => Herr
[2] => Herr
)
)
[titel] => Array
(
[BI3101] => Array
(
[0] =>
[1] =>
[2] =>
)
)
[vrname] => Array
(
[BI3101] => Array
(
[0] => Franz
[1] => Heinz
[2] => Franz
)
)
[nname] => Array
(
[BI3101] => Array
(
[0] => Heinz
[1] => Holger
[2] => Holt
)
)
[phone] => Array
(
[BI3101] => Array
(
[0] => 01234
[1] => 01234
[2] => 01234
)
)
[gutschein] =>
[firma] => Max Muster
[strasse] => Muster Straße 17
[zusatz] =>
[plz] => 12345
[ort] => Musterstadt
[abteilung] =>
[telefon] => 02 1332656 44
[anrede2] => Herr
[titel2] => Array
[fax] =>
[nachname] => Muster
[email] => info@mustermann.de
[vorname] => Max
[webseite] =>
[bemerkungen] =>
[agb] => AGB gelesen
[book] => Seminare/TeilnehmerInnen anmelden
)
Array
(
[BI3101] => Array
(
[0] => 01234
[1] => 01234
[2] => 01234
)
)
PHP-Code:
$post_array = array(); $data = array(); foreach($_POST as $post) { if(!is_array($post)) { array_push($post_array,$post); } elseif(is_array($post)) { array_merge($data,$post); } }
irgendwie ist heute der Wurm drin
Geändert von fair2 (01-09-2010 um 03:36 Uhr)
Grund: mal schöner
|

01-09-2010, 03:18
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Geht das auch in übersichtlich?
Lass dir im Browser den Quelltext anzeigen und kopier es von dort. Da geb ich mir Mühe und du knallst mir wieder so nen Mist vor die Füße, den kein Mensch lesen kann.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

01-09-2010, 03:27
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Dann teil doch $_POST erstmal in zwei neue Arrays auf (foreach und is_array) und verarbeite die jeweils einzeln.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

01-09-2010, 03:43
|
|
fair2
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Germany
Beiträge: 45
|
|
PHP-Code:
$post_array = array();
$data = array();
foreach($_POST as $post => $key)
{
if(!is_array($key))
{
array_merge($post_array,array($post=>$key));
}
elseif(is_array($key))
{
array_merge($data,array($post=>$key));
}
}
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| 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.
HTML-Code ist aus.
|
|
|
|
PHP News
|