作者kerash (K.T)
看板PHP
标题Re: [请益] 关於购物车的cookie问题 (新手第一次发文
时间Sat Mar 23 22:20:21 2013
1F:→ aatty:那$book_no_array=explode(",",$COOKIE["book_no_list"]); 03/23 20:17
2F:→ aatty:=等号左边可以写成$book_no_array[]吗?@@ 03/23 20:18
3F:→ kerash:不能说不行,但是你要了解这样设定变数会变成甚麽结果 03/23 20:19
4F:推 aatty:意思不一样吗?QQ 我有点混乱了 03/23 20:23
5F:推 aatty:两个不都是阵列吗? 03/23 20:32
这应该是你对变数观念的问题
先知道等号左边与等号右边各代表的意义
左边可以当成是一个「容器(变数)」,右边则是要放入的东西
等号的意思就是把右边的内容方进左边的容器里
那php的变数,在未指定时通常都很弹性
$a = 1; // 这时 $a 属性是数字
$a = "1"; // $a 属性是字串
$a = array('a','b'); // $a 属性是阵列
因此可以知道负责当容器的变数是很有弹性的,
他会改变自己的属性变成你给他的样子
接着看右边的部分,
以你的 explode 来看,是 Returns an array of strings, ...
也就是说,你是要将一个阵列丢入你所指定的容器里面
既然 $a 的型态会自动改变的,
那当你要将阵列丢进去後,左边的 $a 自然会自己转型
而不用你自己去把 $a 当成阵列
但是你这样的写法也不会有错,因为 $a 很弹性的原因
因此当你使用 $a[] 时,
$a 被自动转换成阵列并分配区域给你存放右边的东西
以结果来看他没有错,只是不是你的需求
直接说两者的结果差别如下
$a = explode(",","a,b");
=> $a = array (
'a' ,
'b'
);
$a[] = explode(",","a,b");
=> $a = array (
array (
'a' ,
'b'
)
);
以上
说得太多太复杂了~"~ 如果有错请各位大大帮忙勘正
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.186.193
6F:推 aatty:恍然大悟 谢谢你>_< 03/23 23:33