m_Orchestrate learning system---二十、如何写代码不容易犯错
m_Orchestrate learning system---二十、如何寫代碼不容易犯錯(cuò)
一、總結(jié)
一句話總結(jié):能排序多排序
這次查錯(cuò)的啟示:
1、代碼數(shù)據(jù)更規(guī)整:要是取出的數(shù)據(jù)排序的話可以減少很多查錯(cuò)時(shí)間
2、多做練習(xí):功積平時(shí),用起來不容易出錯(cuò),反而節(jié)約超多時(shí)間
3、循環(huán)里面的判斷正誤:判斷正確是要返回的,判斷錯(cuò)誤不能立即返回,如果錯(cuò)誤要所有的全部判斷出來再返回
?
1、復(fù)選框如何傳遞多個(gè)值到后端?
復(fù)選框參數(shù)傳遞用數(shù)組方式
<input type="checkbox" checked="" name="gttid[]" value="{$vo.id}"> {$vo.name}1、name="gttid[]" 這之中g(shù)ttid[] 是純粹的字符串,而不是和php原生代碼相關(guān)的東西,不要看到[] 就覺得和代碼相關(guān),這里只是字符串
2、value="{$vo.id}" 頁面帶{}的是標(biāo)簽,才是和php代碼相關(guān)的東西
?
2、html標(biāo)簽中需要套用php寫邏輯怎么操作?
php標(biāo)簽{php}可解決html中標(biāo)簽中嵌套原生php的問題
<input type="checkbox" {php} if(checkId($vo['id'])) echo 'checked="checked"'; {/php} checked="checked" name="gttid[]" value="$vo.id">{$vo.name}這樣就非常棒棒了,就是標(biāo)簽可以實(shí)現(xiàn)的功能都可以用原生php來實(shí)現(xiàn)
?
?
3、在html頁面中調(diào)用原生php函數(shù)接收控制器assign來的數(shù)據(jù)(在函數(shù)中,所以變量要global啊)?
<!-- 作者: 隱藏域 --> <input type="hidden" name="gtgid" value="{$dataout2.gid}"> <!-- 作者: 隱藏域 --> <?php function checkId($id){ global $dataGroupTopic; //1、在函數(shù)中,所以變量要global啊 foreach($dataGroupTopic as $k => $val){ if($val['gttid']==$id){ return true; }else{ return false; } } } ?> <div class="am-form-group">在函數(shù)中,所以變量要global啊
?
4、view頁面原生php中的函數(shù)訪問不到控制器傳過來的數(shù)據(jù)問題?
1 <input type="hidden" name="gtgid" value="{$dataout2.gid}"> 2 <!-- 作者: 隱藏域 --> 3 4 <?php 5 $data22=$dataGroupTopic; //1、這里可以訪問到控制器傳過來的數(shù)據(jù) 6 //dump($data22);die; 7 function checkId($dataGroupTopic,$id){ //4、所以只有用傳參數(shù)的方式了 8 //dump($GLOBALS['data22']);die; //2、這里訪問不到控制器傳過來的數(shù)據(jù) 9 //global $dataGroupTopic; //3、這里訪問不到控制器傳過來的數(shù)據(jù) 10 //dump($dataGroupTopic);die; 11 foreach($dataGroupTopic as $k => $val){ 12 if($val['gttid']==$id){ 13 dump($id);die; 14 return true; 15 }else{ 16 return false; 17 } 18 } 19 } 20 ?> 21 <div class="am-form-group">?
?
5、頁面多選框顯示數(shù)據(jù)只能顯示一個(gè)的問題?
?
正確的:
?錯(cuò)誤的: 頁面看到的是顯示的最后一個(gè),其實(shí)在數(shù)據(jù)庫里面是顯示的第一個(gè)
?面看到的是顯示的最后一個(gè),其實(shí)在數(shù)據(jù)庫里面是顯示的第一個(gè)
因?yàn)樘砑尤?shù)據(jù)庫的時(shí)候是從小往上添加的,所以最大的數(shù)據(jù)顯示在最上面
這樣就誤導(dǎo)我了
所以要我是從數(shù)據(jù)庫里面取數(shù)據(jù)的時(shí)候按照id排一下序,那么我就知道我是只顯示第一個(gè)了
然后就好找錯(cuò)誤了
1 <input type="hidden" name="gtgid" value="{$dataout2.gid}"> 2 <!-- 作者: 隱藏域 --> 3 4 <?php 5 function checkId($dataGroupTopic,$id){ 6 foreach($dataGroupTopic as $k => $val){ 7 if(intval($val['gttid'])==intval($id)){ 8 return true; 9 }else{ //1、錯(cuò)誤是循環(huán)還沒有比較完,就直接返回false了,去掉這句話就對了,所以要多練習(xí),不然查錯(cuò)很不好查 10 return false; 11 } 12 } 13 } 14 ?> 15 <div class="am-form-group"> 16 <label for="user-phone" class="am-u-sm-3 am-form-label">topic</label> 17 <div class="am-u-sm-9 am-checkbox"> 18 <ul class="am-avg-sm-3 am-thumbnails"> 19 20 {volist name="dataout" id="vo"} 21 <!-- 做復(fù)選框選擇判定 --> 22 <li> 23 <label class="am-checkbox-inline"> 24 <?php 25 /* 26 foreach($dataGroupTopic as $k => $val){ 27 if($val['gttid']==$vo['id']){ 28 //dump($val['gttid']); 29 echo '<input type="checkbox" checked="checked" name="gttid[]" value="'.$vo['id'].'">'; 30 }else{ 31 echo '<input type="checkbox" name="gttid[]" value="'.$vo['id'].'">'; 32 } 33 } 34 //dump($dataGroupTopic); 35 */ 36 ?> 37 <input type="checkbox" {php} if(checkId($dataGroupTopic,$vo['id'])) echo 'checked="checked"'; {/php} name="gttid[]" value="{$vo.id}">{$vo.name} 38 </label> 39 </li> 40 {/volist} 41 </ul> 42 </div> 43 </div>?
這次查錯(cuò)的啟示:
1、代碼數(shù)據(jù)更規(guī)整:要是取出的數(shù)據(jù)排序的話可以減少很多查錯(cuò)時(shí)間
2、多做練習(xí):功積平時(shí),用起來不容易出錯(cuò),反而節(jié)約超多時(shí)間
3、循環(huán)里面的判斷正誤:判斷正確是要返回的,判斷錯(cuò)誤不能立即返回,如果錯(cuò)誤要所有的全部判斷出來再返回
?
?
?
二、內(nèi)容在總結(jié)中
?
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的m_Orchestrate learning system---二十、如何写代码不容易犯错的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GO语言eclipse开发环境搭建
- 下一篇: 2018最新版 手机号、验证码正则表达式