phpbar.de logo

Mailinglisten-Archive

[php] Re: php Element aus Array entfernen

[php] Re: php Element aus Array entfernen

Steffen Sander s.sander_(at)_crs.de
Mon, 27 Mar 2000 17:25:37 +0100


--------------678DFC4EB2C15E546B955FAF
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Hallo Helge,


> Helge Frowein wrote:
>
> ich möchte gerne aus einem Array ein Element, dessen Index ich habe,
> entfernen, möglichst auch mitten raus...
> in Perl gibt es dazu tolle Funktionen, und in PHP4 dann auch, aber
> nicht
> jetzt, in PHP 3
> PHP4 zu installieren ist NICHT die Lösung in meinem Falle, aus
> verschiedenen
> Gründen!
>


die Nachfolgende Funtion hatte ich mal für zwei Arrays erstellt,
wo aus der $biglist ein return aller Elemente erfolgt die nicht in
der $needlelist enthalten sind.
Du kannst die Variable, in der Dein zu entfernender Wert steht in
eine Arrayvariable umwandeln ( settype($variable, "array") )
und als 2.Parameter($needlelist) einsetzen.
Du erhältst dann eine Liste ohne diesen Wert(en) zurück.

Viel Spass!

--Steffen


if(!function_exists("rnotintersect")){
function rnotintersect($biglist,$needlelist)
{//vom 28.09.1999, Steffen Sander
 //return der Elemente aus dem $biglist-Array die nicht im
 //$needlelist-Array enthalten sind
  $bignum  = count($biglist);
 $needlenum = count($needlelist);
 sort($biglist); sort($needlelist);
 for($b=0;$b < $bignum;$b++)
 {//komplette Liste durchgehen
  for($n=0;$n < $needlenum;$n++)
  {//mit den registierten Seiten vergleichen
   //(ohne Dubplikate)
   if( $biglist[$b] == $needlelist[$n] )
   {
    $levelexist += 1;//Datei ist schon vorhanden
    $union_indexes[] = $b;
    //den Zaehler uebergeben
    //der in beiden vorhanden ist
   }//end if big == needle
  }//end for $needlenum
  if(!$levelexist)
  {//wenn Datei noch nicht registriert,
   //dann uebernehmen
   $notreg[] = $biglist[$b];
  }else{
   $levelexist = 0;//reset fuer den naechsten Durchlauf
  }//end if !$levelexist
 }//end for $bignum
  return $notreg;
}//end function rnotintersect($biglist,$needlelist)
}//if(!function_exists...

--
Steffen Sander - Internet/Intranet Softwareentwicklung
CRS Computer Register Service GmbH -  Ritterstr. 11 - 10969 Berlin
mailto:s.sander_(at)_crs.de -Tel: +49-30-614 60 01 - Fax: +49-30-614 85 81
http://www.crs.de - http://www.markthalle.de - http://www.stadtnetz.net


--------------678DFC4EB2C15E546B955FAF
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit


Hallo Helge,

 
Helge Frowein wrote:

ich möchte gerne aus einem Array ein Element, dessen Index ich habe,
entfernen, möglichst auch mitten raus...
in Perl gibt es dazu tolle Funktionen, und in PHP4 dann auch, aber nicht
jetzt, in PHP 3
PHP4 zu installieren ist NICHT die Lösung in meinem Falle, aus verschiedenen
Gründen!

 

die Nachfolgende Funtion hatte ich mal für zwei Arrays erstellt,
wo aus der $biglist ein return aller Elemente erfolgt die nicht in
der $needlelist enthalten sind.
Du kannst die Variable, in der Dein zu entfernender Wert steht in
eine Arrayvariable umwandeln ( settype($variable, "array") )
und als 2.Parameter($needlelist) einsetzen.
Du erhältst dann eine Liste ohne diesen Wert(en) zurück.

Viel Spass!

--Steffen
 

if(!function_exists("rnotintersect")){
function rnotintersect($biglist,$needlelist)
{//vom 28.09.1999, Steffen Sander
 //return der Elemente aus dem $biglist-Array die nicht im
 //$needlelist-Array enthalten sind
  $bignum  = count($biglist);
 $needlenum = count($needlelist);
 sort($biglist); sort($needlelist);
 for($b=0;$b < $bignum;$b++)
 {//komplette Liste durchgehen
  for($n=0;$n < $needlenum;$n++)
  {//mit den registierten Seiten vergleichen
   //(ohne Dubplikate)
   if( $biglist[$b] == $needlelist[$n] )
   {
    $levelexist += 1;//Datei ist schon vorhanden
    $union_indexes[] = $b;
    //den Zaehler uebergeben
    //der in beiden vorhanden ist
   }//end if big == needle
  }//end for $needlenum
  if(!$levelexist)
  {//wenn Datei noch nicht registriert,
   //dann uebernehmen
   $notreg[] = $biglist[$b];
  }else{
   $levelexist = 0;//reset fuer den naechsten Durchlauf
  }//end if !$levelexist
 }//end for $bignum
  return $notreg;
}//end function rnotintersect($biglist,$needlelist)
}//if(!function_exists...

--
Steffen Sander - Internet/Intranet Softwareentwicklung
CRS Computer Register Service GmbH -  Ritterstr. 11 - 10969 Berlin
mailto:s.sander_(at)_crs.de -Tel: +49-30-614 60 01 - Fax: +49-30-614 85 81
http://www.crs.de - http://www.markthalle.de - http://www.stadtnetz.net
  --------------678DFC4EB2C15E546B955FAF--


php::bar PHP Wiki   -   Listenarchive