关于在URL中传递数组及传递后的类型

      今天测试了一下array_search()函数的弱类型,发现了一点东西,就是在url中如何传输数组(多个值);

以前只是知道,在变量后面加[]就是传递数组,后面如果想传递给数组多个值时就不知道了,然后发现了其实这样弄http://www.5555.com?a[]=0&a[]=1

这样就可以了,但是传递过去后两个值默认为字符串,今天试一下array_serach()的弱类型才发现的

以下是测试:在这里插入图片描述

如图,我们先构造一个数组,包含1和0,在使用array_search()函数去找到字符串对应的键值(你也许会发现没有包含admin和1admin啊,不要着急,接下来就是弱类型)

效果如图:
在这里插入图片描述

发现竟然真的会返回键值,这就又是php弱类型的锅了,‘admin’==0 ‘1admin’==1

在比较中会将类型改变。
然后试试传数组试试:

在这里插入图片描述

在这里插入图片描述
发现并没有找到,为什么?仔细看看var_dump()后的$a,是不是发现传进去的都被解释为字符串?没错,0 和1 ,以及 admin和1admin都是字符串,因此就不会发生类型转换。。。

以上均为猜测,如有误恳请指点!

### 如何通过URL参数传递数组 在Web开发中,可以通过多种方式来实现通过URL参数传递数组。通常情况下,这依赖于服务器端框架以及客户端解析这些参数的方式。 #### 使用PHP处理URL中的数组参数 当使用PHP时,可以利用特定的语法结构让PHP自动识别并转换成数组形式的数据。例如,在构建查询字符串时,可以在键名后面加上方括号`[]`表示这是一个数组类型的参数: ```php $sJsonUrl = "http://example.com/api?ids[]=1&ids[]=2&ids[]=3"; $sJson = file_get_contents($sJsonUrl); $oTrends = json_decode($sJson)[^1]; ``` 上述代码片段展示了如何向API发送带有数组参数的请求,并接收返回的结果。这里的关键在于URL中的`ids[]=`部分,它告诉PHP将相同名称的多个值收集到一个名为`ids`的数组里。 #### JavaScript Fetch API与数组参数 对于前端JavaScript应用来说,如果要发送包含数组在内的表单数据给后端服务,则可以借助`URLSearchParams`对象轻松完成这一操作: ```javascript const params = new URLSearchParams(); params.append('items[]', 'apple'); params.append('items[]', 'banana'); fetch('/submit', { method: 'POST', body: params, }) .then(response => response.json()) .catch(error => console.error('Error:', error)); ``` 这段脚本创建了一个新的`URLSearchParams`实例并向其中添加了两个同名但不同值的条目(注意这里的命名也包含了`[]`)。之后再将其作为HTTP POST请求体的一部分提交出去[^2]。 #### RESTful风格下的数组编码 RESTful接口设计往往更倾向于采用简洁明了的方式来表达复杂的数据结构。一种常见的做法是以逗号分隔的形式列出所有元素作为一个单独的查询项: ``` GET http://api.example.com/v1/products?category=electronics,books,games ``` 这种方式不仅直观易懂而且易于维护;不过需要注意的是并非所有的编程语言或库都能很好地支持这种格式,因此可能需要额外编写一些逻辑来进行分割和验证工作。 #### JSON Web Tokens (JWT) 中嵌入数组 另一种方法是在JSON Web Token(JWT)的有效载荷(payload)内携带整个数组信息而不是直接放在URL上。虽然这不是严格意义上的“通过URL参数”,但在某些场景下可能是更好的解决方案,特别是涉及到敏感数据输的时候。 ```json { "sub": "1234567890", "name": "John Doe", "admin": false, "roles": ["user", "editor"] } ``` 此示例展示了一种典型的JWT payload布局,其中包括了一个叫做`roles`的字段用来存储用户的权限列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值