Foros del Web » Programando para Internet » PHP »

error al devolver array

Estas en el tema de error al devolver array en el foro de PHP en Foros del Web. Hola amigos!! Tengo esta funcion Código: function removingEmptyFields($array){ if (is_array($array)){ $retorno = array(count($array)); for($i=0;$i<count($array);$i++){ WriteLog($array[$i]); WriteLog("Count $array[$i]: ".count($array[$i])); $pos=count($array[$i])/2; for($j=0;$j<$pos;$j++){ $retorno[$i][]=$array[$i][$j]; } } } else{ ...
  #1 (permalink)  
Antiguo 02/02/2009, 05:06
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
error al devolver array

Hola amigos!!
Tengo esta funcion
Código:
function removingEmptyFields($array){
	if (is_array($array)){
		$retorno = array(count($array));
		for($i=0;$i<count($array);$i++){
			WriteLog($array[$i]);
			WriteLog("Count $array[$i]: ".count($array[$i]));
			$pos=count($array[$i])/2;
			for($j=0;$j<$pos;$j++){
				$retorno[$i][]=$array[$i][$j];
			}
		}
	}
	else{
		$return = $array;
	}
	return $retorno;
}
Pero me lanza este error
Cannot use a scalar value as an array


La función recibe una variable llamada $array.
Ésta varaible es un array de 3 posiciones y cada una de ellas 20 más.
Pero en realidad tendria que ser 3 posisciones y cada una de 10, por eso el segundo for le he puesto
Código:
$pos=count($array[$i])/2;
			for($j=0;$j<$pos;$j++){
Pero me lanza el error comentado, me podeis decir que me falla?


Gracias!!!
  #2 (permalink)  
Antiguo 02/02/2009, 05:29
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: error al devolver array

Código PHP:
$retorno = array(count($array)); 
Esto no hace lo que crees que hace. Esto crea un array con un elemento de tipo integer y de valor el valor devuelto por count($array). Por eso cuando intentas acceder a $retorno[0] como si fuese un array, te da el fallo, porque es un integer (un escalar), no un array.

Puedes hacerlo quitando la linea que he puesto antes y haciendo
Código PHP:
        for($i=0;$i<count($array);$i++){
            
WriteLog($array[$i]);
            
WriteLog("Count $array[$i]: ".count($array[$i]));
            
$pos=count($array[$i])/2;
$retorno[$i]=array();
            for(
$j=0;$j<$pos;$j++){
                
$retorno[$i][]=$array[$i][$j];
            }
        } 
  #3 (permalink)  
Antiguo 02/02/2009, 05:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: error al devolver array

les dejo el codigo, tenia que ir declarando los tamaños del array

Código:
function removingEmptyFields($array){
	if (is_array($array)){
		$retorno = array(count($array));
		for($i=0;$i<count($array);$i++){
			$pos=(count($array[$i])/2)-1;
			$retorno[$i] = array($pos);
			for($j=0;$j<$pos;$j++){
				$retorno[$i][$j]=$array[$i][$j];
			}
		}
		return $retorno;
	}
	else{
		$return = $array;
		return $retorno;
	}
}
aunque no se si se puede devolver un array por el metodo return....

Me lo podeis confirmar?

Gracias

Última edición por Laufwerk; 02/02/2009 a las 05:57
  #4 (permalink)  
Antiguo 02/02/2009, 07:14
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: error al devolver array

vale pues si dices que no hace falta,
entonces tendria que quedarme asi el codigo
Código PHP:
function removingEmptyFields($array){
    if (
is_array($array)){
//        $retorno = array(count($array));
        
for($i=0;$i<count($array);$i++){
            
$pos=(count($array[$i])/2)-1;
//            $retorno[$i] = array($pos);
            
for($j=0;$j<$pos;$j++){
                
$retorno[$i][$j]=$array[$i][$j];
            }
        }
        return 
$retorno;
    }
    else{
        
$return $array;
        return 
$retorno;
    }

Entonces pq me devuelve esto?

Array
Count : 3
Array
Count Array: 9
Count allTable [0][0]: 1
Count allTable [0][1]: 1
Count allTable [0][2]: 1
Count allTable [0][3]: 1
Count allTable [0][4]: 1
Count allTable [0][5]: 1
Count allTable [0][6]: 1
Count allTable [0][7]: 1
Count allTable [0][8]: 1

Array
Count Array: 9
Count allTable [1][0]: 1
Count allTable [1][1]: 1
Count allTable [1][2]: 1
Count allTable [1][3]: 1
Count allTable [1][4]: 1
Count allTable [1][5]: 1
Count allTable [1][6]: 1
Count allTable [1][7]: 1
Count allTable [1][8]: 1

Array
Count Array: 9
Count allTable [2][0]: 1
Count allTable [2][1]: 1
Count allTable [2][2]: 1
Count allTable [2][3]: 1
Count allTable [2][4]: 1
Count allTable [2][5]: 1
Count allTable [2][6]: 1
Count allTable [2][7]: 1
Count allTable [2][8]: 1

con este otro codigo
Código PHP:
    $allTable removingEmptyFields($allTable);
    
    
WriteLog($allTable);
    
WriteLog("Count : ".count($allTable));
    for(
$i=0;$i<count($allTable);$i++){
        
WriteLog($allTable[$i]);
        
WriteLog("Count $allTable[$i]: ".count($allTable[$i]));
        for(
$j=0;$j<count($allTable[$i]);$j++){
            
WriteLog("Count  allTable [$i][$j]: ".count($allTable[$i][$j]));
        }
        
WriteLog("");
    }
    return 
$allTable
Gracias de antemano
  #5 (permalink)  
Antiguo 02/02/2009, 07:18
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: error al devolver array

No hay problema con devolver un array por return.
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #6 (permalink)  
Antiguo 03/02/2009, 08:22
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: error al devolver array

y porque me devuelve todo 1?

no entiendo como un codigo tan sencillo me da tanto por saco


Saludos
  #7 (permalink)  
Antiguo 04/02/2009, 08:07
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: error al devolver array

sigo igual, alguien me puede ayudar?


Gracias!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:51.