参考: https://www.cnblogs.com/jiqing9006/p/5000849.html
https://blog.csdn.net/zengxiangxuan123456/article/details/51203651
javascript
$this->ajaxReturn($result, 'json')
返回的数据 已经 是 一个 js的对象了.select 的返回结果是 一个数组, 这个数组的每一个元素都是一个 js对象.php
因此 返回的是 $result 是一个 js的对象 组成的 js数组. 并且 下标是 0, 1, 2,...html
Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法 可使用$.parser.parse();这个方法进行处理; $.parser.parse(); 表示对整个页面从新渲染,渲染完就能够看到easyui原来的样式了; var targetObj = $("<input name='mydate' class='easyui-datebox'>").appendTo("#id"); $.parser.parse(targetObj); 表示从新渲染某个特定的组件。
意思是: 语法错误: 缺乏 形式参数. formal: 庄重的, 正式的; 正式场合的; 形式的, 外形的(形参: formal parameter)java
var cxstr=' some content....; for(var i=0; i<rt.length; i++){ cxstr += '<a class="detail" style="text-decoration: none;" href="javascript: void(0)" onclick="detail('+i+')"><span class="glyphicon glyphicon-menu-right"></span> 详情</a>'; cxstr += '<div id="detail" style="display: none; margin-left: 16px;padding-top:8px;">\ 注意这种复杂字符串的换行写法 <table class="table table-striped table-bordered table-hover">\ <tr> <td>001</td> <td>001</td> <td>001</td> <td>001</td> </tr>\ <tr> <td>002</td> <td>002</td> <td>002</td> <td>002</td> </tr>\ <tr> <td>003</td> <td>003</td> <td>003</td> <td>003</td> </tr>\ <tr> <td>004</td> <td>004</td> <td>004</td> <td>004</td> </tr>\ <tr> <td>005</td> <td>005</td> <td>005</td> <td>005</td> </tr>\ </table>\ </div>'; cxstr += '<hr></div>' } $('div#cx').html(cxstr); } function detail(i){ $('a.detail').each(function(index){ if(index == i){ $(this).next().toggle(); $(this).children().toggleClass('glyphicon-menu-right').toggleClass('glyphicon-menu-down'); return false; } });
M('user') ->... -> group('user_id') -> select();
, 分组group是连贯操做. 参数只能是 字符串.
特别注意的是: 分组操做, 只会 返回惟一的 一条记录: 是 这个分组中 全部记录中的 第一条 记录. 因此, 即便在 这个 分组中 包含多条记录, 也只能 获得 第一条记录.
所以, 正由于这个特性, 因此 分组 操做一般不以 获得原始记录 数据 为 目的, 而是 以 获得 统计 数据如 某一组中的 最大值/最小值/平均值 为 目的.jquery
子查询, 也叫 嵌套查询c++
..... from (select .... from ....) sub_table ....
select sth... from (select .... from ....) sub_table ....
.... inner join (select ... from ...) sub_table on .....
参考: https://my.oschina.net/u/1260221/blog/3051394
ajax
===============================编程
array_diff($arr1, $arr2);
就行了https://blog.csdn.net/neddiepeng/article/details/85246085
array_splice($原数组, 删除开始start, 删除长度length, $用来替换的数组)
unset($result[$i])
的陷阱, 仍是用 array_intersect, array_diff(diff 是比较 两个/多个数组之间的区别, 那天然就是获得 差集.
仍是 用 array_splice(胶接)
等, 都会致使 被遍历对象的 元素减小, 而循环遍历中, 虽然循环变量$i 只是第一次的时候初始化 一次 for(var $i=0...)
, 可是 中间的 比较计算 是 每一 次都要进行的, 并且 $i<count($result);
这个 $i是不断再增长的, 而count($result)是不断在减少的。所以, 当$i遍历几回后, 好比 $result 的元素总共只有4个的时候, 那么就会发生 遍历变量$i 大于 count的状况,(当$i=2, 再增长一次$i=3的时候, count($result)就只有2了,从而退出循环) 从而剩下的 $result就不能被 彻底遍历了。 所以, 在后面 遍历的时候, 就会 发生数组元素下标出问题的状况,(不是数组下标溢出, 而是根本就遍历不到, 循环都已经退出了! ) 从而得不到你想要的结果. 参考: https://blog.csdn.net/DickyQie/article/details/79224118
, https://blog.csdn.net/fationyyk/article/details/70212184
json
======================================数组
https://blog.csdn.net/Tacks/article/details/86542333
for(var i=0 , len=arr.length; i<len; i++)....
参考: https://www.cnblogs.com/lvmh/p/6104397.html
可是, 是否是要遍历 访问数组或 对象的 属性名, 则必须使用 for ...in : for(var name in arr_or_obj) {....}
function isEmptyObject(foo){for(var key in obj){ return false;) return true;}
对象的长度不能用.length获取( length只能是对 于数组而言的 ! ),用js原生的Object.keys能够获取到: arr=Object.keys(obj),keys返回的是由对象的 属性名称 组成的数组. 而后判断 arr的length.
tp的 ajaxReturn返回的 老是一个 由对象组成的 json 格式的 索引数组. 即便 返回的是空, 没有内容, 也是一个 空数组, 即: "[ ]"????