Wert mit Key aus Array holen der leer ist
Gerd
- php
0 André Laugks0 Gerd0 Gerd0 André Laugks0 Tom0 André Laugks0 Tom
0 Tom0 Gerd
Hallo,
Ich habe heute morgen schon einmal hier gepostet und bin erhlich gesagt noch nicht viel weiter :(
Ich habe ein Array wo hinter einigen Schlüsseln kein Wert ist. Und ich muß genau diese Schlüssel löschen aber ich komme damit nicht zurecht. Mir sagt man ich sollte mit array_filter arbeiten aber damit komme ich absolut nicht zurecht.
Ich habe es nun mit array_values versucht siehe auch in meinem Script.
$array_list = array();
foreach ($array_gesamt_liste as $list)
{
if (array_values($list) != "")
{
$array_list = array_values($list);
}
}
print_r($array_list);
Wenn in der value von $list ungleich "" ist soll php all diese Werte in ein neues array schreiben. Aber das geht nicht!
Als Fehler kommt:
Argument to array_values() should be an array
Aber $array_gesamt_liste ist ein Array welches ich auch ausgeben kann!
Was ist denn da falsch?
Gruß Gerd
Hallo!
Wenn in der value von $list ungleich "" ist soll php all diese Werte in ein neues array schreiben. Aber das geht nicht!
$array = array(
"key1" => "value1",
"key2" => "",
"key3" => "value3",
"key4" => "value4",
"key5" => "",
"key6" => "value6",
);
while(list($key, $value) = each($array))
{
if($value != "")
{
$array_neu[$key] = $value;
}
}
var_dump($array_neu);
MfG, André Laugks
Hallo André
ja das funktioniert!
Da habe ich wohl falsch angesetzt!
Zu Tom!
Kein Wert ist "" oder auch empty(); Das habe ich auch ausprobiert aber weil da auch was falsch war habe ich das nächste ausprobiert...
Mein Problem war ich wußte nicht wie ich über den value an den key komme. Da ich geblaubt habe anders herum führt das zum Problem da man normal Arrays über den key anspricht.
Wobei "" könnte PHP glaube das es sich um ein leeren string handelt. Das wäre dann auch falsch!
Gruß Gerd
Zu each habe ich auch noch eine Frage also ich beziehe mich auf das Beispiel:
<?php
$foo = array ("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each ($foo);
print_r($bar);
?>
$bar enthält nun die folgenden Schlüssel/Wert Paare:
Array
(
[1] => Bob
[value] => Bob
[0] => Robert
[key] => Robert
)
Es werden 4 Elemente zurück gegeben aber wieso 4 ?
Was soll ich denn mit 0 und 1 anstellen? Mir reicht doch value und key Ich verstehe den Sinn nicht wieso mir das doppelt wieder gegeben wird? Den key spreche ich wenn überhaupt nur das indezies oder des assoziative schlüssel an. Deswegen verstehe ich nicht wieso php mir alles doppelt gibt?
Hallo!
Zu each habe ich auch noch eine Frage also ich beziehe mich auf das Beispiel:
<?php
$foo = array ("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each ($foo);
print_r($bar);
?>$bar enthält nun die folgenden Schlüssel/Wert Paare:
Array
(
[1] => Bob
[value] => Bob
[0] => Robert
[key] => Robert
)Es werden 4 Elemente zurück gegeben aber wieso 4 ?
Das tut each() einfach so. Du kannst Dich für "0" oder "value" bzw. "1" oder "key" entscheiden.
http://de3.php.net/manual/de/function.each.php
MfG, André Laugks
Hello,
$foo = array ("Robert" => "Bob", "Seppo" => "Sepi");
Array
(
[1] => Bob
[value] => Bob
[0] => Robert
[key] => Robert
)
Das tut each() einfach so. Du kannst Dich für "0" oder "value" bzw. "1" oder "key" entscheiden.
Nee umgekehrt: [0] => [1]
oder [key] => [value]
0 entspricht key
1 entspricht value
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo!
Das tut each() einfach so. Du kannst Dich für "0" oder "value" bzw. "1" oder "key" entscheiden.
Nee umgekehrt: [0] => [1]
oder [key] => [value]
Stimmt!
Klugscheißer! ;-)
MfG, André Laugks
Hello,
Das tut each() einfach so. Du kannst Dich für "0" oder "value" bzw. "1" oder "key" entscheiden.
Nee umgekehrt: [0] => [1]
oder [key] => [value]Stimmt!
Klugscheißer! ;-)
nun lass mir doch auch mal eine kleine Freude *schnüff*
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
Ich habe ein Array wo hinter einigen Schlüsseln kein Wert ist. Und ich muß genau diese Schlüssel löschen aber ich komme damit nicht zurecht. Mir sagt man ich sollte mit array_filter arbeiten aber damit komme ich absolut nicht zurecht.
Definiere mal für Dich, was unter "kein Wert" zu verstehen ist.
Das könnte ein "neutrales Element" sein, alse
""
0
1
oder auch
false
NULL
PHP unterscheidet diese Werte. PHP hat auch eine (un)sinnige Funktion empty(), die schau Dir mal an http://de3.php.net/manual/de/function.empty.php
Wenn Du dann eine foreach($_array as $key => $value)-Schleife über das Array jagst und immer danach fragst, ob ein Wert hinter dem Key steckt, dann kannst Du die misliebigen (Nicht-)Werte finden und mit unset($_array[$key]) ins Nirwana schicken.
Liebe Grüße aus http://www.braunschweig.de
Tom
Wenn Du dann eine foreach($_array as $key => $value)-Schleife über das Array jagst und immer danach fragst, ob ein Wert hinter dem Key steckt, dann kannst Du die misliebigen (Nicht-)Werte finden und mit unset($_array[$key]) ins Nirwana schicken.
Eine Frage habe ich jedoch noch.
Wieso löscht php mit empty und unset mein leeren array key nicht???
$array = array(
"key1" => "value1",
"key2" => "",
"key3" => "value3",
"key4" => "value4",
"key5" => "",
"key6" => "value6",
);
$anzahl = count($array);
for( $a = 0; $a <= $anzahl; $a++ )
{
if(empty($array[$a]))
{
unset($array[$a]);
}
}
echo "<br><pre>";
var_dump($array);
echo "</pre><br>";
Hallo!
Wieso löscht php mit empty und unset mein leeren array key nicht??
Du durchläufst mit Deinem Konstrukt ein indiziertes Array. Das Array $array ist aber ein assoziatives Array.
MfG, André Laugks
Hi,
Wieso löscht php mit empty und unset mein leeren array key nicht???
$array = array(
"key1" => "value1",
"key2" => "",
"key3" => "value3",
"key4" => "value4",
"key5" => "",
"key6" => "value6",
);$anzahl = count($array);
for( $a = 0; $a <= $anzahl; $a++ )
{
if(empty($array[$a]))
{
unset($array[$a]);
}
}
PHP löscht die leeren Array-Elemente sehr wohl. Dein Problem hierbei ist, dass du die Elemente $array[0] bis $array[6] löschst. Diese haben allerdings auch vorher schon nicht existiert, da du die Elemente $array['key1'] bis $array['key6'] definiert hast. Und diese Elemente werden in deiner Schleife weder abgefragt, noch gelöscht. Benutzt du folgende Schleife, müsste es funktionieren:
foreach ($array as $key => $val) {
if (empty($val))
unset($array[$key]);
}
Gruß,
Andreas.