协助理解php网址

时间:2012-07-06 22:59:55

标签: php url url-routing server-side

我正在查看使用php的网站,我看到a[]=val1而不是b=val2。我的问题是为什么网址中有括号?什么类型的代码会产生这种效果?

3 个答案:

答案 0 :(得分:2)

为什么URL中的括号?

括号位于网址中,表示val1将被分配到数组a中的下一个位置。如果您对括号的空白部分感到困惑,请查看how php arrays work

会产生什么样的代码?

对于创建这样一个url的代码,它可以是编码器或其他脚本的显式定义,也可以通过使用method="get"属性的表单以某种方式创建。


实施例

要创建它,您可以将数组定义为输入字段的name,如下所示:

<form method="get">
  <input name="a[]" ... />
  <input name="a[]" ... />
  <input name="a[]" ... />
</form>

或者您可以使用此网址创建一个链接(a标记):

<a href="foo.php?a[]=val1&a[]=val2&a[]=val3">Click Me!</a>


要使用PHP解析此URL,您可以使用$_GET变量从url中检索值:

<?php
  $a = $_GET['a'];

  $val1 = $a[0];
  $val2 = $a[1];
  $val3 = $a[2];
  ...

  print_r($a);
?>

print_r($a)语句的打印输出如下所示(如果您将其打包在<pre>标记中):

Array (
  a => Array (
    0 => 'val1',
    1 => 'val2',
    2 => 'val3'
  )
)

答案 1 :(得分:1)

这是将新元素附加到数组的语法。每个变量前面应该有美元符号:

$a[] = $val1;

答案 2 :(得分:1)

您之前会看到页面上的输入字段,例如:

<input name="color[]" type="checkbox" value="red">
<input name="color[]" type="checkbox" value="blue">
<input name="color[]" type="checkbox" value="green">

其中用户可以选择多个响应,并且它们将在操作页面的$ _GET(和URL)中的$ color数组中可用,如您所描述的那样显示。

(类似地,它也可以是作为不基于用户输入的数组传递的隐藏变量。)