2011-12-12 4 views
-1

Je cetteTrouver la nouvelle clé après le tableau a été modifié

array([0] => 4, [1] => 6, [2] => 8, [3] =>11); 
$value = 6;//(refers to [1]) 

Une fois le code de base, mon tableau pourrait changer de devenir par exemple:

array([0] => 4, [1] => 8, [2] =>11); 

Je voudrais avoir un variable ($newvalue) définie sur la valeur suivante si la clé $value a été supprimée ($newvalue=8) ou reste la même ($newvalue=6) si 6 est toujours dans les valeurs de ce tableau.

NB si $value est le dernier (11), et 11 a été retiré, $newvalue doit être réglé sur 4.

Pour résumer:

$value = 11; /* array([0] => 4, [1] => 6, [2] => 8);   */ $newvalue = 4; 
$value = 11; /* array([0] => 4, [1] => 6, [2] => 8, [3] => 11); */ $newvalue = 11; 
+0

Vous avez indiqué quel comportement vous désirez mais qu'avez-vous essayé jusqu'ici pour l'accomplir? Si rien, vous devriez certainement lire sur * les structures de données et les algorithmes *. Il vous donnera quelques bonnes idées sur la résolution de problèmes comme celui-ci. – webbiedave

+2

votre cerveau fait mal ??? Mon cerveau me fait mal en essayant de comprendre ce que vous voulez faire. – Bot

+0

Je ne comprends pas vraiment ce que vous demandez, mais il semble que vous puissiez bénéficier de [array_push] (http://us3.php.net/manual/fr/function.array-push.php), [array_shift ] (http://us3.php.net/manual/fr/function.array-shift.php), et [array_values] (http://php.net/manual/fr/function.array-values.php) – rdlowrey

Répondre

0

En supposant que vos valeurs de tableau sont toujours dans l'ordre croissant order:

if (in_array($value, $the_array)) { 
    $newvalue = $value; 
} else if ($value > max($the_array)) { 
    $newvalue = $the_array[0]; 
} else { 
    foreach ($the_array as $v) { 
    if ($v > $value) { 
     $newvalue = $v; 
     break; 
    } 
    } 
} 
Questions connexes