Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
23.01.2008, 12:43
LeJean



Hi,

ich muss in einem numerischen Array in PHP zwei Werte inklusive deren Schlüssel miteinander vertauschen. Das Wichtige daran ist, dass die Positionen erhalten bleiben, d.h.

Quellcode:Array( [0] => "foo", [1] => "bar", [2] => "this", [3] => "that" ) soll nach dem Tausch von den Werten an den Stellen 1 und 2 so aussehen:

Quellcode:Array( [0] => "foo", [2] => "this", [1] => "bar", [3] => "that" ) Mir wäre neu, dass ein numerisches (ebenso ein assoziatives) Array immer automatisch sortiert sei. Die einzige Hilfe an der Sache ist, dass es sich immer um benachbarte Elemente handelt, die vertauscht werden müssen. Eine weitere Array-Dimension kommt leider nicht infrage.

Ich hab versucht mit array_splice die beiden Werte im ganzen Array durch ein neues Array zu ersetzen, in dem die Werte und deren Schlüssel in umgekehrter Reihenfolge stehen. Allerdings beachtet array_splice die Schlüssel des einzufügenden Teils nicht - die werden nicht beibehalten.

Jemand nen Vorschlag?
MfG, Jean

--

zum Seitenanfang zum Seitenende Profil || Suche
001
23.01.2008, 13:19
Heini



Hoffe ich habe dich verstanden :D

Kannst du den numerischen Array nicht in einen nichtnumerischen schreiben, aber trotzdem numerische Namen vergeben?

Dann kannst du das z.B. so in einen nichtnumerischen array schreiben:

PHP-Quellcode:<?

Array( ["0"] => "foo", ["2"] => "this", ["1"] => "bar", ["3"] => "that" )

?>
Dann wird der Wert mit dem Schlüssel "2" an zweiter Stelle stehen ("0" ist dann die erste Stelle), aber trotzdem den Schlüssel 2 haben.

Ist nur eine Idee, ist keine Funktionsgarantie drauf, sofern das überhaupt das ist, was du suchst...

--

.


Dieser Beitrag wurde am 23.01.2008 um 13:20 von Heini bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
23.01.2008, 13:23
LeJean



Naja, ich wollte das als numerisches Array erhalten. So schwer war's auch garnicht -.-
Hab jetzt ne total simple Funktion geschrieben.
PHP-Quellcode:<?php
function array_flip_values($array$id1$id2) {
     
$temp = array();
     foreach(
$array as $key=>$part) {
         if(
$key != $id1 && $key != $id2)
             
$temp[$key] = $part;
         elseif(
$key == $id1)
             
$temp[$id2] = $array[$id2];
         elseif(
$key == $id2)
             
$temp[$id1] = $array[$id1];
     }
     
     return 
$temp;
 }
?>
so ist das, wenn man manchmal den Wald vor lauter Bäumen nicht sieht ;)

Jean

--

zum Seitenanfang zum Seitenende Profil || Suche