Foros del Web » Programando para Internet » PHP »

como llamo array a funcion return

Estas en el tema de como llamo array a funcion return en el foro de PHP en Foros del Web. hola, tengo esto: Código: $char_spec = array("á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "ñ", "Ñ", "¡", "¿"); $char_html = array("á", "é", "í", ...
  #1 (permalink)  
Antiguo 16/07/2008, 12:04
Usuario no validado
 
Fecha de Ingreso: marzo-2007
Mensajes: 238
Antigüedad: 17 años, 1 mes
Puntos: 5
como llamo array a funcion return

hola, tengo esto:
Código:
$char_spec = array("á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "ñ", "Ñ", "¡", "¿");
$char_html = array("á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "ñ", "Ñ", "¡", "¿");
$anchor_html = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U", "nh", "Nh;", "", "");
function strChangeTo($pChar) 
{
// TEMA
$item_li = strtoupper($pChar);
$item_li = str_replace($char_spec, $char_html, $item_li);
// ANCLA
$anchor_li = str_replace($char_html, $anchor_html, $item_li);
$anchor_li = ucfirst(strtolower($item_li)); // Asi

$cadena = "<a href='". $anchor_li ."'>". $item_li ."</a>"; 
return $cadena;
}


// AQUI IMPRIMO EL RETURN
	for ($i=0; $i<count($sign_a);$i++) //$sign_a[22] = array("tema"=>"Bastidor"
	echo "<li>", strChangeTo($sign_a[$i]['tema']) ,"</li>\n";
pero al entrar ala funcion, no conoce el valor de los arrays
  #2 (permalink)  
Antiguo 16/07/2008, 12:27
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: como llamo array a funcion return

Hola worldPeace_Plis
No reconoce las matrices por el ámbito de las variables, tus arrays estan en el ámbito global y la función es un ámbito local, podrias hacer lo siguiente:

en caso de que los arrays los va ha utilizar en otras funciones mas
Código PHP:
$char_spec = array("á""é""í""ó""ú""Á""É""Í""Ó""Ú""ñ""Ñ""¡""¿");
$char_html = array("&aacute;""&eacute;""&iacute;""&oacute;""&uacute;""&Aacute;""&Eacute;""&Iacute;""&Oacute;""&Uacute;""&ntilde;""&Ntilde;""&iexcl;""&iquest;");
$anchor_html = array("a""e""i""o""u""A""E""I""O""U""nh""Nh;""""");
function 
strChangeTo($pChar
{
global 
$char_spec$char_html$anchor_html;
// TEMA
$item_li strtoupper($pChar);
$item_li str_replace($char_spec$char_html$item_li);
// ANCLA
$anchor_li str_replace($char_html$anchor_html$item_li);
$anchor_li ucfirst(strtolower($item_li)); // Asi

$cadena "<a href='"$anchor_li ."'>"$item_li ."</a>"
return 
$cadena;

si los arrays son solamente para esta funcion
Código PHP:
function strChangeTo($pChar
{
$char_spec = array("á""é""í""ó""ú""Á""É""Í""Ó""Ú""ñ""Ñ""¡""¿");
$char_html = array("&aacute;""&eacute;""&iacute;""&oacute;""&uacute;""&Aacute;""&Eacute;""&Iacute;""&Oacute;""&Uacute;""&ntilde;""&Ntilde;""&iexcl;""&iquest;");
$anchor_html = array("a""e""i""o""u""A""E""I""O""U""nh""Nh;""""");
// TEMA
$item_li strtoupper($pChar);
$item_li str_replace($char_spec$char_html$item_li);
// ANCLA
$anchor_li str_replace($char_html$anchor_html$item_li);
$anchor_li ucfirst(strtolower($item_li)); // Asi

$cadena "<a href='"$anchor_li ."'>"$item_li ."</a>"
return 
$cadena;

Salud2
__________________

  #3 (permalink)  
Antiguo 16/07/2008, 12:33
 
Fecha de Ingreso: abril-2008
Ubicación: Montevideo - Uruguay
Mensajes: 156
Antigüedad: 16 años
Puntos: 5
Respuesta: como llamo array a funcion return

Hi !

Primero que nada en ese pedazo de script que copiaste no está el array "$sign_a" ponlo para poderlo ver...

y Segundo la parte del for se hace de esta manera:
Código PHP:
       $cnt count($sign_a);
    
    for (
$i=0$i<$cnt;$i++){
        echo 
"<li>"strChangeTo($sign_a[$i]['tema']) ,"</li>\n";
    } 
Las llaves siempre, es buena costumbre y luego otra cosa es no hacer el "count" dentro del for... Porque sino en cada vuelta tendrá que calcular la cantidad de elementos del vector ( y no están creciendo en cada vuelta) asi que lo puedes usar por fuera.

-ByE-
__________________
--
Mi Portfolio Online! Visitalo!
--
  #4 (permalink)  
Antiguo 16/07/2008, 12:57
Usuario no validado
 
Fecha de Ingreso: marzo-2007
Mensajes: 238
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: como llamo array a funcion return

Gracias por la pronta respuesta
Código:
	<ul id="index_cont">
	<li class="index_theme" style="font-weight:bold; text-decoration:underline; padding:1px 2px 1px 12px;">2008:</li>
	<!-- TEMAS ANTERIORES -->
	<?Php
$char_spec = array("á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "ñ", "Ñ", "¡", "¿");
$char_html = array("&aacute;", "&eacute;", "&iacute;", "&oacute;", "&uacute;", "&Aacute;", "&Eacute;", "&Iacute;", "&Oacute;", "&Uacute;", "&ntilde;", "&Ntilde;", "&iexcl;", "&iquest;");
//
function strChangeTo($pAnchor, $pChar) 
{
global $char_spec, $char_html;
// TEMA
$item_li = strtoupper($pChar);
$item_li = str_replace($char_spec, $char_html, $item_li);

$cadena = "<a href='". $pAnchor ."'>". $item_li ."</a>"; 
return $cadena;
}

// INFORMACION en ul-li
$cnt = count($sign_a);

for ($i=0; $i<$cnt; $i++){
echo "<li>", strChangeTo($sign_a[$i]['ancla'], $sign_a[$i]['tema']) ,"</li>\n";
}  
	?>
	</ul>
Estoy haciendo un alista a partir de la info de un array. Ya agregue las lineas que me recomandaron.

gerson deje los arrays afuera de la funcion, me crea la lista, pero porque cuando veo el codigo fuentepara ver html no me sustituye los caracteres? la á que viene desde el array continua en á y no cambia a &aacute;

Aqui les pongo al arreglo:
Código:
$sign_a[0] = array("tema"=>"La Actuación", "ancla"=>"actuacion", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[1] = array("tema"=>"La Escenografía", "ancla"=>"escenografia", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[2] = array("tema"=>"Las Artes escénicas", "ancla"=>"art_escenicas", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[3] = array("tema"=>"El Teatro", "ancla"=>"teatro", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[4] = array("tema"=>"El Actor", "ancla"=>"actor", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[5] = array("tema"=>"El Teatrodrama", "ancla"=>"teatrodrama", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[6] = array("tema"=>"La Comedia", "ancla"=>"comedia", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[7] = array("tema"=>"La Pantomima", "ancla"=>"pantomima", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[8] = array("tema"=>"El Dramaturgo", "ancla"=>"dramaturgo", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[9] = array("tema"=>"Un Monólogo", "ancla"=>"monologo", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[10] = array("tema"=>"El Ballet", "ancla"=>"ballet", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[11] = array("tema"=>"El Escenario", "ancla"=>"escenario", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[12] = array("tema"=>"El Cine", "ancla"=>"cine", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[13] = array("tema"=>"El Telón", "ancla"=>"telon", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[14] = array("tema"=>"Música incidental", "ancla"=>"mus_incid", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[15] = array("tema"=>"El Director", "ancla"=>"director", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[16] = array("tema"=>"Tramoya", "ancla"=>"tramoya", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[17] = array("tema"=>"Las Utilerias", "ancla"=>"utileria", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[18] = array("tema"=>"El Camerino", "ancla"=>"camerino", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[19] = array("tema"=>"Comedia musical", "ancla"=>"com_musical", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[20] = array("tema"=>"Atrezzo", "ancla"=>"atrezzo", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[21] = array("tema"=>"Vestuario", "ancla"=>"vestuario", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[22] = array("tema"=>"El Bastidor", "ancla"=>"bastidor", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
$sign_a[23] = array("tema"=>"La Zarzuela", "ancla"=>"zarzuela", "fecha"=>"2008-MM-YY", "autor"=>"SMRC");
...aun no lo terminaba asi es q decidi hacerlo asi de mientras

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 11:04.