隨筆-31  評論-257  文章-0  trackbacks-0
                我在初學(xué)PHP期間,學(xué)了點(diǎn)入門文章,學(xué)了學(xué)語法,就想做點(diǎn)小東西來練練手,做什么好呢?就做個(gè)購物車吧,頁面都做好了,現(xiàn)在正寫代碼進(jìn)去,測試運(yùn)行,但有個(gè)小問題,我在產(chǎn)品列表里明明是選了幾個(gè)產(chǎn)品的,即是選中了幾個(gè) Checkbox ,checkbox 的名字都是"prodno" 但怎么在PHP里用 $_POST['prodno'] 來獲取它的值,總是只獲取到最后的那個(gè)checkbox 的值,為什么?檢查了form幾遍,沒有錯(cuò)誤,再檢查了PHP幾遍,也沒錯(cuò)啊[loo](其實(shí)是checkbox里的name錯(cuò)了,當(dāng)時(shí)不知道PHP要這樣),郁悶了,我以前做Java都是這樣寫的呀,有什么問題?做ASP時(shí),也是這樣寫也沒錯(cuò)呀,問題出在哪呢?
                后來用 is_array($_POST['prodno']) 得到的是false,不會(huì)吧,PHP不會(huì)獲取重復(fù)名字的表單?唉,后來上網(wǎng)Google了一翻,原來PHP里獲取重復(fù)名字的表單值跟JSP/ASP等的都不一樣,JSP的直接用 request.getParameterValues("prodno"); 返回的是一個(gè)String[] 數(shù)組,但PHP的差別在于,要將form里的 checkbox 的 name 寫成: prodno[] 就是要多了后面那對方括號,之后PHP里 $_POST['prodno'] 獲得的就是一個(gè) array ,唉,這樣都行,不過后來想想,這個(gè)可能跟PHP的一個(gè)語法有關(guān)吧,在PHP里,數(shù)組是可以這樣賦值的:

                $arr[] = 'aaa';
                $arr[] = 'bbb';
                $arr[] = 'ccc';

                這樣寫的話,$arr 里就有三個(gè)值,key分別是0,1,2,而value分別是'aaa','bbb','ccc',
          就是說在PHP里,你給數(shù)組賦值的話,不寫key的話,他會(huì)默認(rèn)用遞增的數(shù)字來自動(dòng)當(dāng)key,所以,當(dāng)表單提交到PHP里時(shí),實(shí)際上就是

                $prodno[] = 'a';
                $prodno[] = 'b';

                所以,當(dāng) $_POST['prodno'] 的值就是$prodno 的值,所以它是一個(gè)數(shù)組,
          而如果表單里name的值寫成 prodno 的話,就會(huì)是

                $prodno = 'a';
                $prodno = 'b';

                所以,大家可以看得出問題所在了,這樣$prodno的值始終會(huì)給最后的那個(gè)值覆蓋,所以就出現(xiàn)我之前的現(xiàn)像我用$_POST['prodno']獲取到的值總是我最后的那個(gè)checkbox的值,所以更不用說is_array()了,當(dāng)然是得到false了。
          所以,對于一些有其它編程語言基礎(chǔ)的人來說,學(xué)PHP的話,要注意這點(diǎn),跟別的語言都不同。
          posted on 2008-07-29 13:45 姜大叔 閱讀(1388) 評論(2)  編輯  收藏 所屬分類: PHP

          評論:
          # re: [PHP初學(xué)心得]PHP初學(xué)注意,POST獲取同名表單項(xiàng)數(shù)組 2009-04-28 16:44 | 路人甲
          謝謝啊,看了你的這篇東西,剛好解決了我類似的問題!  回復(fù)  更多評論
            
          # re: [PHP初學(xué)心得]PHP初學(xué)注意,POST獲取同名表單項(xiàng)數(shù)組[未登錄] 2009-08-20 13:24 | William
          太有用了,我還納悶了半天呢, 原來要這樣, 有意思  回復(fù)  更多評論
            
          主站蜘蛛池模板: 胶南市| 清新县| 玉田县| 建平县| 海安县| 沐川县| 阳曲县| 什邡市| 石阡县| 邢台县| 柳河县| 昭通市| 西乡县| 高邑县| 阜宁县| 南平市| 广饶县| 宁津县| 贵溪市| 东辽县| 中卫市| 福泉市| 方城县| 五大连池市| 东方市| 海原县| 平舆县| 徐州市| 甘孜县| 盐城市| 息烽县| 新昌县| 惠来县| 银川市| 金寨县| 胶南市| 田林县| 定边县| 贺兰县| 玛纳斯县| 南投县|