Comunidad de diseño web y desarrollo en internet online

Evitar el uso del foreach() en php

Citar            
MensajeEscrito el 17 Mar 2007 12:03 am
Hola, talvez alguien ha trabajado con matrices en php y por alguna razon ocupan q se escriban todos los datos en el documento, pero no entienden el uso del foreach(), entonces este es un codigo alternativo:

Código :

<?
$array[] = array(1,2,3,4,5,6);
$array[] = array('a','b','c');
$array[] = array('!','@','#');
$array[] = array(')','&','*');
$array[] = array('$','%','^','a');
for ($i=0;$i<=count($array);$i++) {
   for($j=0;$j<=count($array[$i]);$j++) {
      echo $array[$i][$j] . ' ';
   }
   echo '<br>';
}
?>

Talvez no sea una colaboracion significativa pero a alguno le servira, los simbolos q estan en el array solo los puse asi, no significan nada, para mas dudas posteen...

Por petrov

186 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Mar 2007 01:52 am
Eh bueno tienes 2 detalles en ese código.

    1. La condición que colocas en los bucles, hace una iteración demás.
    2. El uso de la funcion count directamente en la condición hace que el rendimiento del script sea menor. Solución: usa el count antes de la condición y almacena el total en una variable para usarla en la condición.


Aparte el foreach es sencillo de usar en realidad, y ese codigo solo es valido cuando los indices de las matrices son numericos no acepta indices de otro tipo.

Correcion a tu codigo y una simulacion de foreach

Código :

$array[] = array("m"=>1,2,3,4,5,6);

$array[] = array("key"=>'a',array('b'),'c');

$array[] = array('!','@','#');

$array[] = array(')','&','*');

$array[] = array('$','%','^','a');


// Simulacion de tu ejemplo

function ejemplo ($maArray)
{
   if (is_array($maArray))
   {
      $ilTotal = count($maArray);
      reset($maArray);
      for ($i =0; $i<$ilTotal;$i++)
      {
         echo ejemplo(current($maArray))  . " ";
         next($maArray);
      }
      echo "<br />";
   }
   else
   {
      return $maArray . " ";
   }
}
ejemplo ($array);

function emule_foreach ( &$array )
{
   if (!is_array($array))
   {
      trigger_error("$array no es una matriz");
      return false;
   }
   $key = key($array);
   $value = current($array);
   next ($array);
   return (isset($key))?array($key,$value):false;
}

while ( list($key,$value) = emule_foreach($array[0])  )
{
   echo "$key => $value, ";
}


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 17 Mar 2007 09:15 pm
buenos consejos, gracias...
yo se como es el foreach pero yo decia para los q no lo entienden

Por petrov

186 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.