Einzelnen Beitrag anzeigen
  #8 (permalink)  
Alt 18-03-2017, 00:38
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 452
mermshaus wird schon bald berühmt werden
Standard

Wenn hier schon nach alten Threads gebuddelt wird, poste ich hier auch noch mal meinen Beitrag von drüben, weil auch hier die Lösungen unvollständig sind, weil sie auf next() als Abbruchbedingung aufbauen.

Zitat:
next() liefert den nächsten Wert oder bool(false), wenn das Ende des Arrays erreicht ist. Arrays können aber bool(false) als korrekte Werte enthalten. Deshalb geht das mit „Rückgabe von next()“ als Abbruchbedingung so nicht.

Nutzung von global und variable Variablen sind auch nicht schön.

Besser wahrscheinlich so:

PHP-Code:
function setArrayPointer(array &$array$key)
{
    
reset($array);

    while (
key($array) !== null) {
        if (
key($array) === $key) {
            return 
true;
        }
        
next($array);
    }

    return 
false;

Einige rudimentäre Tests:

PHP-Code:
$tests = array();

$tests[] = array(
    
'function' => function () {
        
$test range(099);

        
setArrayPointer($test0);

        return 
current($test);
    },
    
'expectedResult' => 0
);

$tests[] = array(
    
'function' => function () {
        
$test range(099);

        
setArrayPointer($test99);

        return 
current($test);
    },
    
'expectedResult' => 99
);

$tests[] = array(
    
'function' => function () {
        
$test range(099);

        
setArrayPointer($test50);

        return 
current($test);
    },
    
'expectedResult' => 50
);

$tests[] = array(
    
'function' => function () {
        
$test = array('foo' => 'bar''qix' => 'qux');

        
setArrayPointer($test'foo');

        return 
current($test);
    },
    
'expectedResult' => 'bar'
);

$tests[] = array(
    
'function' => function () {
        
$test = array('foo' => 'bar''qix' => 'qux');

        
setArrayPointer($test'qix');

        return 
current($test);
    },
    
'expectedResult' => 'qux'
);

$tests[] = array(
    
'function' => function () {
        
$test array_fill(150false);
        
$test[25] = true;

        
setArrayPointer($test25);

        return 
current($test);
    },
    
'expectedResult' => true
);

$tests[] = array(
    
'function' => function () {
        
$test = array(123);

        return 
setArrayPointer($test0);
    },
    
'expectedResult' => true
);

$tests[] = array(
    
'function' => function () {
        
$test = array(123);

        return 
setArrayPointer($test3);
    },
    
'expectedResult' => false
);

$tests[] = array(
    
'function' => function () {
        
$test = array(123);

        return 
setArrayPointer($test'0');
    },
    
'expectedResult' => false
);



foreach (
$tests as $test) {
    
$func $test['function'];
    
$result $func();

    if (
$result !== $test['expectedResult']) {
        
printf("[ERROR] %s expected, %s given\n"$test['expectedResult'], $result);
    } else {
        echo 
"OK\n";
    }

Mit Zitat antworten