antes que nada una observación en el script de edwin. Si $valores es un array y $num es una cadena, es incorrecto compararlos con ==, no estoy seguro que intentaste hacer, tal vez es error mio, ojalá puedas explicar tu función.
Mientras tanto aqui les dejo una sencilla, a ver que les parece
Código PHP:
/*de antemano suponemos que la cadena se separa por comas y que se desea el valor a la izquierda del valor que pasamos
como parámetro. Asi mismo funciona para númros enteros, pero facilmente se adapta para otro tipo de dato. Lo hice
considerando los ejemplos que pusiste. */
function getPreviousValue($search,$wholeString) {
if(!defined("REQUIRED_OFFSET")) {
define("REQUIRED_OFFSET",-1);
}
$match = 0;
$values = array();
$values = explode(",",$wholeString);
foreach($values as $in => $value) {
$match = (int)$value == (int)$search ? $values[$in + REQUIRED_OFFSET] : $match;
}
return $match;
}
la otra es asi:
Código PHP:
function createList($string){
$elements = array();
$ranks = array();
if(strstr($string,",")) {
$elements = explode(",",$string);
}
elseif(strstr($string,"-")) {
echo $string;
$ranks = explode("-",$string);
$ini = $ranks[0];
$end = $ranks[1];
for($i = $ini; $i <= $end; $i++) {
$elements[] = $i;
}
}
else {
echo "Cadena no válida...";
return false;
}
return $elements;
}
un saludo