Hallo nachdem ich im Anfängerforum auf die richtige Spur gebracht worden bin, hab ich jetzt mal einen kleinen Algo geschrieben.
Ich möchte Namen aus einem Array n
ach dem Anfangsbuchstan sortieren. Die Daten ansich enthalten noch weiter infos wie email-adresse, aber das lassen wir der einfachheit mal aussen vor.
Aus dem 1d Array soll ein 2d Array werden, sprich
(Peter Arndt, Hans Becht, Klaus Doerr, Anke Dirke)
wird zu
(A((Peter),(Arndt)), B((Hans)(Becht)), D(((Klaus)(Doerr)), ((Anke),(Dirke))).
Das Datenarray bekomme ich von der Datenbank sortiert ausgelsen, lassen wir auch aussen vor. Testweise habe ich die Sachen mal manuell erstellt.
Vorab, mein Code funktioniert. Fast. Ich bekomme die Sachen richtig sortiert,
aber plötzlich kann ich auf die Daten nicht mehr zugreifen (im Programm an sich schon!)
Hier mal mal script, extra noch vereinfacht und dokumentiert. Am Ende habe ich die Array mal durchdebbuged für euch.
Hoffe ihr könnt mir helfen, sitze den ganzen Tag schon dran und kriegs net gebacken an was es liegt.
PHP-Code:
public function Get_users_for_peoplecollector () { ### called by forum (popup peoplecollector)
//$users_arr = $this->Prepare_users(0, "ORDER by prename ASC");
$users_arr = array(array()); ### Testperson 1
$users_arr[0]["name"] = "Arndt";
$users_arr[0]["prename"] = "Markus";
$users_arr[1]["name"] = "Becht"; ### Testperson 2
$users_arr[1]["prename"] = "Timo";
$users_arr[2]["name"] = "Dunst"; ### Testperson 3
$users_arr[2]["prename"] = "Patrick";
$capitals_arr = array (); ### capitals dienen als Container, haben 1. den Anfangsbuchstaben und 2.
foreach ($users_arr as $item) {
$capital = strtolower($item["name"]{0}); ### Erster Buchstabe + kleiner machen = capital
if ($capitals_arr[sizeof($capitals_arr)-1]["capital"] != $capital) { ### Schauen ob capital schon im Array ist, wenn nein, Anlegen!
array_push($capitals_arr, array ('capital' => $capital,
'users' => Array())) ; ### Eintrag besteht aus capital + array von mit x beginnenden Namen
}
$link_to_users = $capitals_arr[sizeof($capitals_arr)-1]["users"];
echo "
check array? ".$link_to_users."
"; ### --> Ausgabe bei jedem durchlauf: "Array", Users ist da
array_push($link_to_users, array ('prename' => $item["name"] )); ### Und jetzt kommt in das Array von users noch ein array mit den eigentlichen Daten
// print_r ($capitals_arr);
echo "> ".$link_to_users[0]["prename"]; ### HIER GEHT ES: er zeigt die Namen an: Arndt, Becht, Dunst
echo " =? ".$capitals_arr[sizeof($capitals_arr)-1]["users"][0]["prename"]; ### HIER NICHT!! Dabei ist der LINK von $link_to_users direkt kopiert !!!
}
print_r ($capitals_arr); ### Array ( [0] => Array ( [capital] => a [users] => Array ( ) ) [1] => Array ( [capital] => b [users] => Array ( ) ) [2] => Array ( [capital] => d [users] => Array ( ) ) )
print_r ($capitals_arr[0]); ### Array ( [capital] => a [users] => Array ( ) )
print_r ($capitals_arr[0]["capital"]); ### a
print_r ($capitals_arr[0]["users"]); ### Array ( )
print_r ($capitals_arr[0]["users"][0]); ### Keine Ausgabe, argh !!!!
return $capitals_arr;
}
Wäre sehr sehr nice wenn ihr mir helfen könntet
Marco[/php]