Duda foreach

suaveSHOW

Buenas, estaba haciendo una función que comprueba unos datos.
Os voy a dar una versión simplificada de lo que tengo.

function check($datoID) {
$array=array(1,2,3,4,5,6);
foreach($array as $dato) {
if($dato==$datoID) $valid=0;
else $valid=1;
}
return $valid;

}

La duda es que me gustaría saber la forma de parar el foreach cuando valid sea 0 para evitar un hipotetico caso de:
$datoID=3; cuando llega al elemento que su valor es 3 pues $valid=0 pero pasara hasta el 6 en el que $valid=1 entonces se comera el 0 del 3.

Saludos:)

Soltrac

break

RaymaN

Métele un break; cuando valid = 0.

NickNack

Añadiendo una condicion mas y un comparativo? Has probado así? O un break.

Tampoco te capto muy bien que intentas expresar, entiendo codigo, pero no te capto xD

suaveSHOW

El break funciona :)

#4 el problema es que aunque ponga el else, el $valid se sobreescribira con el valor 1 si hay que no es igual borrando uno anterior que si lo era.

LOc0

Si te interesa algo el estilo a la hora de programar, te recomendaría que usaras los bucles así:

for y foreach -> cuando vayas a dar un número de vueltas determinado desde el principio.

while -> número de vueltas indeterminado.

do-while -> lo mismo que el while pero como mínimo una vuelta.

A partir de ahí y suponiendo que estás con PHP:

function check($datoID) {

$array=array(1,2,3,4,5,6);
$valid=FALSE;
reset($array);

while(($value=each($array)) && !($valid=($value[1]==$datoID)));

return $valid;

}

Tb podrías mirar -> http://php.net/manual/es/function.array-search.php

Salu2 ;)

suaveSHOW

#6 el array ese es de ejemplo, es un dato que saco desde un campo de la BD tipo 1,53,656,37,883,103... etc.

Siempre he usado el in_array() y esta vez se me olvidó completamente xD así que ya lo simplifique con esta.

Usuarios habituales

  • suaveSHOW
  • LOc0
  • NickNack
  • RaymaN
  • Soltrac