valor - recibir variables get php
¿Cómo obtener PHP $_GET array? (10)
¿Es posible tener un valor en $_GET
como una matriz?
Si intento enviar un enlace con http://link/foo.php?id=1&id=2&id=3
, y quiero usar $_GET[''id'']
en el lado php, ¿cómo puede ese valor ser un ¿formación? Porque ahora echo $_GET[''id'']
está devolviendo 3
. Es la última identificación que está en el enlace del encabezado. ¿Alguna sugerencia?
Coloque todos los identificadores en una variable llamada $ ids y sepárelos con un ",":
$ids = "1,2,3,4,5,6";
Pásales así:
$url = "?ids={$ids}";
Procesarlos:
$ids = explode(",", $_GET[''ids'']);
Creo que sé lo que quieres decir, si quieres enviar una matriz a través de una URL puedes usar serialize
por ejemplo:
$foo = array(1,2,3);
$serialized_array = serialize($foo);
$url = "http://www.foo.com/page.php?vars=".$foo;
y en page.php
$vars = unserialize($_GET[''vars'']);
Cuando no desee cambiar el enlace (por ejemplo, foo.php?id=1&id=2&id=3
) probablemente pueda hacer algo como esto (aunque podría haber una mejor manera ...):
$id_arr = array();
foreach (explode("&", $_SERVER[''QUERY_STRING'']) as $tmp_arr_param) {
$split_param = explode("=", $tmp_arr_param);
if ($split_param[0] == "id") {
$id_arr[] = urldecode($split_param[1]);
}
}
print_r($id_arr);
La forma habitual de hacerlo en PHP es poner id[]
en su URL en lugar de simplemente id
:
http://link/foo.php?id[]=1&id[]=2&id[]=3
Entonces $_GET[''id'']
será una matriz de esos valores. No es especialmente bonito, pero funciona de la caja.
Puede especificar una matriz en su HTML de esta manera:
<input type="hidden" name="id[]" value="1"/>
<input type="hidden" name="id[]" value="2"/>
<input type="hidden" name="id[]" value="3"/>
Esto dará como resultado esta matriz $ _GET en PHP:
array(
''id'' => array(
0 => 1,
1 => 2,
2 => 3
)
)
Por supuesto, puede usar cualquier tipo de entrada de HTML, aquí. Lo importante es que todas las entradas cuyos valores desee en la matriz ''id'' tengan el nombre id[]
.
Puede hacer id
una serie de valores separados por comas, como este:
index.php?id=1,2,3&name=john
Luego, dentro de su código PHP, explórelo en una matriz:
$values = explode(",", $_GET["id"]);
print count($values) . " values passed.";
Esto mantendrá la brevedad. El otro método (más comúnmente usado con $ _POST) es usar corchetes de estilo de matriz:
index.php?id[]=1&id[]=2&id[]=3&name=john
Pero eso claramente sería mucho más detallado.
Puede obtenerlos usando la Cadena de consulta:
$idArray = explode(''&'',$_SERVER["QUERY_STRING"]);
Esto te dará:
$idArray[0] = "id=1";
$idArray[1] = "id=2";
$idArray[2] = "id=3";
Entonces
foreach ($idArray as $index => $avPair)
{
list($ignore, $value) = explode("=", $avPair);
$id[$index] = $value;
}
Esto te dará
$id[0] = "1";
$id[1] = "2";
$id[2] = "3";
Sí, aquí hay un ejemplo de código con alguna explicación en los comentarios:
<?php
// Fill up array with names
$sql=mysql_query("SELECT * FROM fb_registration");
while($res=mysql_fetch_array($sql))
{
$a[]=$res[''username''];
//$a[]=$res[''password''];
}
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint=$a[$i];
}
else
{
$hint=$hint." , ".$a[$i];
}
}
}
}
?>
$url = ''http://link/foo.php?id=1-2-3'';
$id = explode(''-'', $url);
echo $id[0];
echo $id[1];
echo $id[2];