1

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

4

3 回答 3

2

为什么 URL 中有括号?

括号在 url 中表示val1将被分配到数组中的下一个位置a。如果您对括号的空白部分感到困惑,请查看php 数组的工作原理

什么样的代码会产生这个?

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


例子:

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

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

或者您可以a使用此 url 创建一个链接(标签):

<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'
  )
)
于 2012-07-06T23:14:07.597 回答
1

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

$a[] = $val1;
于 2012-07-06T23:01:25.640 回答
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 数组中可用,如您所描述的那样显示。

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

于 2012-07-06T23:07:01.957 回答