- 优先级例外 (不重要)
当&& 于赋值号= 同时出现时,没有严格遵循优先级规则
if ($a = 100 && $b = 200) {
var_dump($a, $b);
}
如果严格按照优先级,这个地方是有问题的,$a = (100 && $b) = 200
2.foreach value引用后为什么要unset(重要)
$a = ['a', 'b', 'c'];
$b = ['d', 'e', 'f'];
foreach ($a as &$value) {
echo $value . PHP_EOF;
}
//unset($value);
var_dump($a);
foreach ($a as $value) {
echo $value . PHP_EOF;
}
当在第一次循环不unset掉value的时候, 通过打印 a会发现,引用挂在最后,当下一次再循环 a 会 发 现 , 引 用 挂 在 最 后 , 当 下 一 次 再 循 环 a, 并且 value又被重复利用时,就出现了问题,上面打印结果为,引用指向了上一次 v a l u e 又 被 重 复 利 用 时 , 就 出 现 了 问 题 , 上 面 打 印 结 果 为 , 引 用 指 向 了 上 一 次 v
a
b
c
a
b
b
3.$_POST与php://input的区别与坑
- 当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变 量以关联数组形式传入当前脚本。
- php://input 是个可以访问请求的原始数据的只读流。 enctype=”multipart/form-data” 的时候php://input 是无效的,仅仅能获取到空串。
请求主体:(x-www-form-urlencoded)
Content-Type: application/x-www-form-urlencoded
Content-Length: 23
name=test&submit=submit
输出:
----------input--------
//var_dump(file_get_contents('php://input', 'r'));
string 'name=test&submit=submit' (length=23)
----------post---------
//var_dump($_POST);
array (size=2)
'name' => string 'test' (length=4)
'submit' => string 'submit' (length=6)
例子2:
请求:(multipart/form-data)
Content-Type: multipart/form-data; boundary=
---------------------------22554656810024
Content-Length: 245
-----------------------------22554656810024
Content-Disposition: form-data; name="test"
test
-----------------------------22554656810024
Content-Disposition: form-data; name="submit"
submit
-----------------------------22554656810024--
输出:
----------input--------
//var_dump(file_get_contents('php://input', 'r'));
string '' (length=0)
----------post---------
//var_dump($_POST);
array (size=2)
'name' => string 'test' (length=4)
'submit' => string 'submit' (length=6)