web-dev-qa-db-ja.com

PHP $ _GET配列を取得するには?

$_GETに配列として値を持つことは可能ですか?

リンクをhttp://link/foo.php?id=1&id=2&id=3で送信しようとしていて、PHP側で$_GET['id']を使用したい場合、その値を配列にするにはどうすればよいですか?現時点ではecho $_GET['id']3を返しているためです。ヘッダーリンクにある最後のID。助言がありますか?

42
faya

PHP)でこれを行う通常の方法は、idの代わりにid[]をURLに入れることです。

http://link/foo.php?id[]=1&id[]=2&id[]=3

その場合、$_GET['id']はそれらの値の配列になります。特にきれいなわけではありませんが、そのまま使用できます。

93
Jordan Running

次のように、idを一連のコンマ区切り値にすることができます。

index.php?id=1,2,3&name=john

次に、PHPコード内で、配列に展開します。

$values = explode(",", $_GET["id"]);
print count($values) . " values passed.";

これにより簡潔さが維持されます。他の(より一般的に$ _POSTで使用される)方法は、配列スタイルの角括弧を使用することです:

index.php?id[]=1&id[]=2&id[]=3&name=john

しかし、それは明らかにもっと冗長です。

26
Sampson

この方法でHTMLに配列を指定できます。

<input type="hidden" name="id[]" value="1"/>
<input type="hidden" name="id[]" value="2"/>
<input type="hidden" name="id[]" value="3"/>

これにより、PHPでこの$ _GET配列が生成されます。

array(
  'id' => array(
    0 => 1,
    1 => 2,
    2 => 3
  )
)

もちろん、ここではあらゆる種類のHTML入力を使用できます。重要なことは、「id」配列に値が必要なすべての入力の名前がid[]

18
Lucas Oman

クエリ文字列を使用して取得できます。

$idArray = explode('&',$_SERVER["QUERY_STRING"]);

これにより、以下が得られます。

$idArray[0] = "id=1";
$idArray[1] = "id=2";
$idArray[2] = "id=3";

それから

foreach ($idArray as $index => $avPair)
{
  list($ignore, $value) = explode("=", $avPair);
  $id[$index] = $value;
}

これはあなたに与えます

$id[0] = "1";
$id[1] = "2";
$id[2] = "3";
15
ChronoFish

リンクを変更したくない場合(例:foo.php?id=1&id=2&id=3)おそらく次のようなことができます(より良い方法があるかもしれませんが...):

$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);
6
ChristopheD
5
Gumbo

すべてのIDを$ idsという変数に入れて、「、」で区切ります。

$ids = "1,2,3,4,5,6";

次のように渡します:

$url = "?ids={$ids}";

それらを処理する:

$ids = explode(",", $_GET['ids']);
3

私はあなたの意味を知っていると思います、URLを介して配列を送信したい場合は、 serialize を使用できます

例えば:

$foo = array(1,2,3);
$serialized_array = serialize($foo);
$url = "http://www.foo.com/page.php?vars=".$foo;

およびpage.php

$vars = unserialize($_GET['vars']);
3
robjmills

はい、コメントにいくつかの説明があるコード例を示します。

<?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];
        }
      }
    }
  }
?>
0
raju