phpbar.de logo

Mailinglisten-Archive

[php] array_unshift - Ersatz

[php] array_unshift - Ersatz

Ulf Wendel UW_(at)_NetUSE.DE
Wed, 15 Mar 2000 12:58:37 +0100


"Berger, Uwe 2282 FIT-CP6" wrote:
> ich benötige einen kurzen Denkanstoß für den Ersatz der php-Funktion
> array_unshift die erst unter php4.0 (lt. Manual) zur Verfügung steht. Hat
> jemand eine kurze Code-Zeile im Kopf...?

In PHP3 kannst Du die Funktion nicht genau nachbauen, weil keine
Funktionen mit variabler Parameterzahl möglich sind. Dieses
Feature kommt erst mit PHP4, näheres findet such unter dem
Stichwort "variable-length argument lists",
http://www.php.net/manual/functions.arguments.php#functions.variable-arg-list
. 

Deshalb muß man zu einem kleinen Trick greifen und als zweiten
Parameter ein Array mit variabler Zahl von Elementen verwenden.
Zur Steigerung des Komfort, dürfen auch Skalare an die Funktion
übergeben werden. Die Funktion prüft hierzu: if
(!is_array($base)) und wandelt ggf. den Skalar in ein Array um:
$base = array($base).

/**
* PHP3 Version von array_unshift()
* Behandelt ein Array wie einen Stack, fügt neue 
* Daten vor dem ersten Element ein.
* _(at)_param  mixed  $base         bisheriges Array oder Skalar
* _(at)_param  mixed  $newelements  Array (oder Skalar) mit den neuen
Elementen
* _(at)_return array  $together     Array mit den neuen Elementen 
*                              vor den Elementen des alten Arrays
*/
function my_array_unshift($base, $newelements) {
  if (!is_array($base))
    $base = array($base);
  if  (!is_array($newelements))
    $newelements = array($newelements);

  $newarray = array();

  while (list($k, $v)=each($newelements))
    $newarray[$k]=$v;
  while (list($k, $v)=each($base))
    $newarray[$k]=$v;

  return $newarray;
} // end func my_array_unshift


Ulf

-- 
Ulf Wendel
NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany
Fon: +49 431 386435 00  --  Fax: +49 431 386435 99


php::bar PHP Wiki   -   Listenarchive