Thoralf Knuth: allow_call_time_pass_reference und array_multisort

Beitrag lesen

Hallo,

bitte poste (, oder verweise auf) das Script!

das ganze Script spielt dabei gar keine Rolle, da ich den Fehler ja soweit eingrenzen kann.

  
/* Sortiert den Kalender */  
function fSortiereKalender( &$arrKalender )  
{  
 /* Vorgabe ist aufsteigend nach Datum und anschließend nach Dauer  
   Sortiert wird im Moment mittels multisort, eventuell ist usort schneller, ist aber derzeit nicht wichtig */  
  
 /* Referenz-Spalten rausziehen */  
 $arrSortierenNachTS = array(); $arrSortierenNachD = array(); /* Die Referenz-Arrays */  
 foreach( $arrKalender as $k => $v )  
 {  
  $arrSortierenNachTS[$k] = $v["timestamp"];  
  $arrSortierenNachD[$k] = $v["dauer"];  
 }  
 /* Sortieren, Kalender MUSS per Referenz uebergeben werden: http://bugs.php.net/bug.php?id=12936 */  
 array_multisort( &$arrSortierenNachTS, SORT_ASC, SORT_NUMERIC, &$arrSortierenNachD, SORT_ASC, SORT_NUMERIC, &$arrKalender );  
} /* function fSortiereKalender( &$arrKalender ) */  

Wegen http://bugs.php.net/bug.php?id=12936 MUSS das Array by reference übergeben werden:

It's a side-effect of the implementation. It could be fixed if I forced all arguments to be passed by reference, but that means that you can't specify SORT_* constants directly as arguments..

Die Funktion greift, wenn das Array by value übergeben wird, auf ein (nicht existentes) Array im globalen Namensraum zu.

Gruß, Thoralf

--
Sic Luceat Lux!