Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-10-2004, 18:16   #1 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
[stuff] mehrdimensionale arrays erstellen

so die sonntags langeweile hat zugeschlagen. hab mal drei funktionen gebaut
mit denen man einfach mehrdimensionale arrays erstellen kann.

PHP-Code:
<?php

/**
    creates array with char or integer values from $low to $high. 
    $step (default 1) is used to increment between values.
**/
function & ras_range($low$high$step=1)
{
    if (
is_int($low) && is_int($high) && is_int($step))
    {
        
$a     = array();
        
$high += $step;
        while(
$low $high)
        {
            
$a[]  = $low;
            
$low += $step;
        }

        return 
$a;
    }
    else if (
is_string($low) && is_string($high) && is_int($step))
    {
        
$a    = array();
        
$low  ord($low);
        
$high ord($high) + $step;
        while(
$low $high)
        {
            
$a[] = chr($low);
            
$low += $step;
        }

        return 
$a;
    }

    return 
false;
}

/**
    creates multidemesional array in ras_range() style.
**/
function & ras_range_mdim($xLow$xHigh$xStep=1$yLow$yHigh$yStep=1)
{
    if (
is_int($xLow) && is_int($xHigh) && is_int($xStep) && 
        
is_int($yLow) && is_int($yHigh) && is_int($yStep) )
    {
        
$a      = array();
        
$row    =& ras_range($xLow$xHigh$xStep);
        
$yHigh += $yStep;
        while(
$yLow $yHigh)
        {
            
$a[]   = $row;
            
$yLow += $yStep;
        }

        return 
$a;
    }
    return 
false;
}

/**
    creates multidimensional array with array_fill.
    $*Start is the number of the first index.
    $*Num is the number of indices.
**/
function & ras_array_fill_mdim($xStart$xNum$yStart$yNum$value)
{
    if (
is_int($xStart) && is_int($xNum) && is_int($yStart) && is_int($yNum))
    {
        
$arr array_fill($yStart$yNumarray_fill($xStart$xNum$value));
        
        return 
$arr;
    }

    return 
false;
}

/** -- OUTPUT TEST -- **/
//$arr =& ras_range(0, 50, 5);
//$arr =& ras_range_mdim(0, 50, 5, 0, 50, 5);
//$arr =& ras_array_fill_mdim(1, 50, 1, 50, 'test');
//var_dump($arr);

/** -- BENCHMARK TEST -- **/
if(true){  //set to false to override benchmark

$iterations 10000;
echo 
"Benchmark with $iterations iterations\n";

$i 0$time microtime(true);
while(
$i++ < $iterationsrange(11001);
print 
"range: \t\t\t".(microtime(true)-$time)."\n";
usleep(100);

$i 0$time microtime(true);
while(
$i++ < $iterationsras_range(11001);
print 
"ras_range: \t\t".(microtime(true)-$time)."\n";
usleep(100);

$i 0$time microtime(true);
while(
$i++ < $iterationsras_range_mdim(1100111001);
print 
"ras_range_mdim: \t".(microtime(true)-$time)."\n";
usleep(100);

$i 0$time microtime(true);
while(
$i++ < $iterationsras_array_fill_mdim(11001100'test');
print 
"ras_array_fill_mdim: \t".(microtime(true)-$time)."\n";
usleep(100);

}

?>
zeiten getestet mit php5

Zitat:
Benchmark with 10000 iterations
range: 0.42702412605286
ras_range: 2.4733619689941
ras_range_mdim: 5.1172301769257
array_fill_mdim: 0.68439793586731
range ist ~6x schneller als ras_range. schade das es den step parameter
erst ab php5 gibt.
array_fill_mdim ist rasend schnell, dafür nicht ganz so flexibel.

viel spass für alle dies gebrauchen können
__________________
elias ist offline   Mit Zitat antworten
Alt 31-10-2004, 22:04   #2 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Muss ich den Sinn jetzt verstehen?
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 01-11-2004, 08:35   #3 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
Ja!

das native php5 range() oder ras_range() erzeugt zb sowas:

PHP-Code:
range(0,305); //ras_range gleiche ausgabe, auch php4
/*
0,5,10,15,20,25,30
*/ 
ras_range_mdim() erzeugt ein zweidimensionales array

PHP-Code:
ras_range_mdim(0,3050305);
/*
    Y
X  0,5,10,15,20,25,30
    0,5,10,15,20,25,30 
    0,5,10,15,20,25,30
    0,5,10,15,20,25,30
    0,5,10,15,20,25,30
    0,5,10,15,20,25,30
    0,5,10,15,20,25,30
*/ 
ist einfach nur ne arbeitserleichterung für eine sache die man selten braucht
__________________
elias ist offline   Mit Zitat antworten
Alt 01-11-2004, 09:14   #4 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Zitat:
Zitat von elias
ist einfach nur ne arbeitserleichterung für eine sache die man selten braucht
Seeehr seeehr selten...
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele