→ aatty:那$book_no_array=explode(",",$COOKIE["book_no_list"]); 03/23 20:17
→ aatty:=等號左邊可以寫成$book_no_array[]嗎?@@ 03/23 20:18
→ kerash:不能說不行,但是你要了解這樣設定變數會變成甚麼結果 03/23 20:19
推 aatty:意思不一樣嗎?QQ 我有點混亂了 03/23 20:23
推 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
推 aatty:恍然大悟 謝謝你>_< 03/23 23:33