Mischung aus ereg und array_key_exists
Michael
- php
Gibt es etwas derartiges wie in der Kopfzeile beschrieben?
Ich hab das Problem, dass ich nur feststellen will, ob ein bestimmter Schlüssel existiert, der mit etwas mir bekanntem beginnt.
Also in Form von:
$_POST['db,user,file']
Nun will ich prüfen, ob es in Post Keys gibt, die mit "db,..." beginnen.
ICh weiß, dass ich die Schlüssel in so einem Fall eigentlich in mehrdimensionalen Arrays ordnen sollte, aber das wäre in Aufwand / Nutzen unpraktikabel...
Es müsste doch eine einfache Methode für soetwas geben ohne dass man in einer Schleife gleich jeden einzlenen Wert prüfen muss.
Danke für Hilfe!
Okay, ich denke mal, dafür gibt es keine praktikable Lösung, aber nun frage ich mich, ob es möglich ist den Schlüssel eines Arrays über ein weiteres Array zu definieren.
Also in form von:
$array_set_var = array(1 => 'list', 2 => 'user', 3 => 'file');
Ich möchte erhalten ein array der Form:
$_SESSION['rights']['list']['user']['file'] = $value;
Mit $_SESSION['rights'][$array_set_var] = $value;
komme ich nicht weit...
Danke für jede Hilfe!
echo $begrüßung;
$array_set_var = array(1 => 'list', 2 => 'user', 3 => 'file');
Mit $_SESSION['rights'][$array_set_var] = $value;
komme ich nicht weit...
Nein, denn Array-Keys dürfen nur Integers oder String sein. Vielleicht solltest du doch lieber die üblichen Wege gehen, anstatt mit deiner Sparlösung alles zu verkomplizieren.
echo "$verabschiedung $name";
Ich will ja auch nicht das Array als Key definieren sondern die Werte des Arrays als Key benutzen. Nur weiß ich nicht wie ich so anhängen soll...
also bei $array = (1,2);
$werte[1][2] = $value;
und bei $array = ('rot','gelb','blau');
$werte['rot']['gelb']['blau'] = $value;
Probiers mal mit Referenzen:
Beispiel:
$value[1][2] = "now";
$key_array = array(1,2);
$keys = explode(",",$key_array);
$reference = &$value;
foreach($keys as $key){
$reference = &$reference[$key];
}
$value = "after";
echo $begrüßung;
Probiers mal mit Referenzen:
Beispiel:
Könntest du bitte erklären, was du damit vorhast? Aus dem unkommentierten Code kann ich außer dem Fehler, dass explode() nur Strings verarbeitet und keine Arrays, nichts verwertbares entnehmen.
echo "$verabschiedung $name";
Tach.
$array_set_var = array(1 => 'list', 2 => 'user', 3 => 'file');
Ich möchte erhalten ein array der Form:
$_SESSION['rights']['list']['user']['file'] = $value;
Spontan fällt mir z. B. folgendes ein (ohne Beachtung von Sonderfällen etc.):
function createArrayFromKeys ($a) {
$accu = array();
if (sizeof($a) > 0) {
$key = array_shift($a);
$accu[$key] = createArrayFromKeys($a);
}
return $accu;
}
Allerdings stellt sich die Frage, ob diese Verschachtelungsorgie wirklich nötig ist ... Verrat doch mal, was du eigentlich vorhast. Dein Beispielcode weist ja darauf hin, daß du an einer Art Rechtevergabe bastelst. Vielleicht finden wir gemeinsam eine schönere, einfachere Lösung für dein Vorhaben.
$_POST['db,user,file']
ICh weiß, dass ich die Schlüssel in so einem Fall eigentlich in mehrdimensionalen Arrays ordnen sollte, aber das wäre in Aufwand / Nutzen unpraktikabel...
Du hast jetzt:
<input name="db,user,file" ...>
Du brauchst für deine Mehrdimensionalität in $_POST:
<input name="db[user][file]" ...>
Ist das wirklich unpraktikabel?