array_keys mit explode trennen

Turtle78

Mitglied
Hallo zusammen,

ich habe ein array, daß folgendermaßen aussieht:

Array ( [Heinz Müller] => 39 [Max Meier] => 35 [Hans Schmitt] => 33)

Jetzt möchte ich das ganz gerne beim ersten Leerzeichen trennen, den Nachnamen wegschmeissen und das array sollte dann wieder so aussehen wie oben (halt nur ohne Nachnamen).
Irgendwie habe ich ein Brett vor dem Kopf. Mit
PHP:
explode(" ", array_keys($array), 2);
klaptts irgendwie nicht. Kann mir jemand helfen, oder einen Denkansatz bieten.

Lieben Dank Turtle
 
Hi,


explode — Teilt einen String anhand einer Zeichenkette

und du hast nach array_keys() wieder ein Array.

Lösung wäre zum Beispiel sowas:
PHP:
$array = array ('Heinz Müller' => 39, 'Max Meier' => 35, 'Hans Schmitt' => 33);

$array = array_flip($array);

function splitIt($element) { 
		$a = explode(" ", $element, 2); 
	return $a[0];
	
}

$b = array_map("splitit", $array);

print_r($b);
 
Zuletzt bearbeitet:
Wenn zwei Array-Elemente allerdings denselben Wert haben, gibt es Probleme. Mein Vorschlag:
PHP:
	$array = array('Heinz Müller' => 33, 'Max Meier' => 33, 'Hans Schmitt' => 33);
$b = array_combine(array_map("splitit", array_keys($array)), $array);
 
Hallo Gumbo,

danke, stimmt bei gleichen Werten geht es schief.
Wenn ich Deine Code-Zeile einsetze, bekomme ich allerdings folgenden Fehler:

Fatal error: Call to undefined function: array_combine()

Hab bei php.net auch schon nachgelesen, kann aber eigentlich keinen Fehler entdecken.
Hier nochmal der gesamte Code

PHP:
$array = array ('Heinz Müller' => 39, 'Max Meier' => 34, 'Hans Schmitt' => 33);

$array = array_flip($array);
function splitIt($element) { 
        $a = explode(" ", $element, 2); 
    return $a[0];
    
}
$b = array_combine(array_map("splitit", array_keys($array)), $array);  
print_r($b);
 
Die Funktion steht erst seit PHP 5 zur Verfügung. Du kannst sie aber auch einfach nachbauen:
PHP:
if( !function_exists('array_combine') ) {
	function array_combine( $keys, $values )
	{
		if( !is_array($keys) || !is_array($values) ) {
			return false;
		}
		if( count($keys) != count($values) ) {
			return false;
		}
		$combined = array();
		$keys = array_values($keys);
		$values = array_values($values);
		foreach( $values as $key => $val ) {
			$combined[$keys[$key]] = $val;
		}
		return $combined;
	}
}
 
Ah, O.K. ich habe nur PHP 4 zur Verfügung.
Aber mit der nachgebauten Funktion klappt es jetzt.

Vielen lieben Dank an die beiden Helfer.

Grüße Turtle
 
Zurück