js数组去重



Array.prototype.removal=function(){   var list={};   var arrL=[];   for(let i=0;i<this.length;i++){    if(!list[this[i]]){     list[this[i]]=true;     arrL.push(this[i]);    }   }   return arrL;     }  var arrS=[2,3,2,11,45,23,11];    console.log(arrS.removal());

原理就是对数据进行循环,对每个值进行判断,如果没有重复的博客就添加到数组中返回;外部直接调用。 http://blog.csdn.net/sinat_36194710/article/details/77220401加勒比海盗5

node的包管理器—-npm的使用

当我博客们安装完node之后,npm就会自动安装在博客node目录下,那么我博客们就可以使用了

1.通过命令行使用

首先,我博客们安装包的博客时候有两种方式,一种是本地安装,一种是全局安装

  (1)本地安装

博客本地安装的博客时候,会将下载的博客包存储在博客本地项目的博客node_modules目录下面,安装的博客命令为下面所示,这种安装命令不会将安装信息保存到package.json文件,下面以安装模块lodash为例进行安装演示:

npm install lodash

  (2)全局安装

博客全局安装中,一般为一些命令行工具包的博客安装,可以在博客命令行直接使用,那么就需要在博客命令行进行安装,比如对文件格式进行校验的博客jshint的博客安装,如下面代码:

npm install -g jshint 

安装之后,就可以使用该命令进行对文件的博客校验了

node的<a href=博客包管理器—-npm的博客使用”>

而且能够进行安装位置的博客查看,我博客博客安装位置时node下面的博客lib位置:

node的<a href=博客包管理器—-npm的博客使用”>

2.通过package.json文件使用

博客学习了解了上面的博客安装方式之后,我博客们就可以进行对包的博客简单安装,那么,当我博客们有很多包安装时,我博客们就需要使用到package.json文件进行安装,首先来看看,package.json的博客基本格式:

{   "name": "react-basics-review",   "version": "1.0.0",   "description": "a practise of react study ",   "main": "index.js",   "scripts": {     "test": "echo /"Error: no test specified/" && exit 1"   },   "repository": {     "type": "git",     "url": "git+https://github.com/suwu150/react-basics-review.git"   },   "author": "jkwu",   "license": "ISC",   "bugs": {     "url": "https://github.com/suwu150/react-basics-review/issues"   },   "homepage": "https://github.com/suwu150/react-basics-review#readme",   "devDependencies": {     "babel-plugin-transform-object-rest-spread": "^6.23.0",     "babel-preset-es2015": "^6.24.1",     "react": "^15.6.1"   } }

如上面格式的博客代码,每当我博客们安装一个本地的博客包的博客时候,就会在博客devDependencies或dependencies里边以对象的博客形式追加一项,其中

     devDependencies: 在博客开发和测试环境中需要依赖的博客

     dependencies: 在博客生产环境中需要依赖的博客

那么,package.json都有那些优点呢:

  *以文档的博客形式规定了项目中所使用的博客依赖

  *可以确定每个包所使用的博客版本

  *项目的博客构建可重复,在博客多人协作中更加方便

创建package.json文件时,可以通过手动创建或者使用命令npm init进行创建,在博客package.json文件中必须包涵有"name","version"两个字段

这样的博客话,我博客们就可以进行包依赖的博客管理了,即可已通过手动在博客package.json中添加包的博客版本和名称,也可以使用命令行进行添加,在博客这里手动添加的博客就不说了,如果要添加到devDependencies,可以通过npm install 的博客–save-dev,如果要安装到dependencies,则可以使用-save命令

如下面代码:

npm i lodash --save-dev npm i lodash --save 

安装之后的博客结果如下所示:

  "devDependencies": {     "babel-plugin-transform-object-rest-spread": "^6.23.0",     "babel-preset-es2015": "^6.24.1",     "lodash": "^4.17.4",     "react": "^15.6.1"   },   "dependencies": {     "lodash": "^4.17.4"   }

这样,当别人也需要使用这个项目的博客时候,就可以简单执行npm install 命令进行对所需的博客依赖进行下载安装

3. 包与模块的博客发布

    如果要想将包上传到npm服务器,来供其他人下载使用,我博客们只需进行简单的博客操作即可,需要在博客项目中创建一个符合CommonJS文件规范的博客文件就可以,然后在博客npm官网进行注册帐号,通过命令  npm publish命令上传到注册的博客帐号即可

应该注意的博客是,当我博客们使用淘宝进行的博客时候,可能上传时会出现问题,所以将淘宝镜像删除之后在博客操作,因为npm会将数据写入到.npmrc里边,使用淘宝镜像时会出现问题.

具体操作如下面链接所示:npm包的博客发布

http://blog.csdn.net/suwu150/article/details/77203800加勒比海盗5

JSP中出现According to TLD or attribute directive in tag file

宽为限 紧用功 工夫到 滞塞通

JSP中出现According to TLD or attribute directive in tag file, attribute value does not accept any expressions

应用部署运行的博客时候出现JSP异常, 发生在博客使用JSTL库的博客时候: According to TLD or attribute directive in tag file, attribute value does not accept any expressions, 可能是因为使用了JSP2.0版本, 同时又没有使用JSTL core库的博客备用版本(RT库), 以下有两种处理方法:

1、修改web.xml.

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

改为2.3版本的博客

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app>

2、使用JSTL core RT库

JSTL core库的博客有两种taglib伪指令, 其中RT库即是依赖于JSP传统的博客请求时属性值, 而不是依赖于EL来实现(称为EL库.JSP2.0将支持EL)

JSP中使用<%@ taglib uri=http://Java.sun.com/jstl/core prefix="c"%>博客2.3版本都可以,在博客2.4就不行了, 难道是版本不兼容吗?

只要将

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

改为

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>

博客肩膀上”>站在博客巨人的博客肩膀上

本博文转载地址
http://blog.csdn.net/f9inux/article/details/1368428

http://blog.csdn.net/gmingzhou/article/details/77212311加勒比海盗5

jquery关于checkbox选中和不选中的问题


近期由于项目需要,用到了列表checkbox,在博客点击被考核人的博客一行时,check不选中,然后解决方法是

   //点击被考核人列表     $("table.be_assess-employee-container").on("click", "tr.content", function () {         if ($(this).hasClass("on")) {             return;         } else {             $("table.be_assess-employee-container tr.content").removeClass("on");             $(this).addClass("on");             $("table.be_assess-employee-container tr.content td input[type=checkbox]").prop("checked", false);               $(this).find("td:eq(0) input[type=checkbox]").prop("checked", true);             getAllEmployeeToAppraisal();         }     }); 
 

jquery关于checkbox选中和不选中的<a href=博客问题”>
http://blog.csdn.net/maoxiao1229/article/details/77234531加勒比海盗5

继承有几种方式,分别是什么,想要实现继承可以使用哪些方法

1.背景介绍

      简介

       在博客JS中继承是一个非常复杂的博客话题,比其他任何面向对象语言中的博客继承都复杂得多。在博客大多数其他面向对象语言中,继承一个类只需使用一个关键字即可。在博客JS中想要达到继承公用成员的博客目的博客,需要采取一系列措施。


2.知识剖析

    继承有哪些方法可以实现?

     2.1.原型链

       原型链的博客基本思想是利用原型让一个引用类型继承另一个引用类型的博客属性和方法。假如我博客们让原型对象等于另一个类型的博客实例,结果会怎么样呢?显然,此时的博客原型对象将包含一个指向另一个原型的博客指针,相应地,另一个原型中也包含着一个指向另一个构造函数的博客指针。假如另一个原型又是另一个类型的博客实例,那么上述关系依然成立,如此层层递进,就构成了实例与原型的博客链条。这就是所谓原型链的博客基本概念。

       实现原型链有一种基本模式,其代码大致如下:

function Fn1() {
   this.property = true;//this绑定Fn1新对象
}//构造函数模式,函数名需大写


Fn1.prototype.getSuperValue = function () {

return this.property;

};
function Fn2() {
   this.subproperty = false;
}//继承了fn1
Fn2.prototype = new Fn1();
console.log(Fn2.prototype.property);//true
Fn2.prototype.getSubValue = function () {
   return this.subproperty;
};

var instance = new Fn2();
console.log(instance.getSuperValue());//true

    2.2.借用构造函数         

       在博客解决原型中包含引用类型值所带来问题的博客过程中,开发人员开始使用一种叫做借用构造函数的博客技术。这种技术的博客基本思想非常简单,即在博客子类型构造函数的博客内部调用超类型构造函数。一般都是通过apply()和call()方法也可以在博客新创建的博客对象上执行构造函数。

function Fn1() {
   this.colors = ['red', 'blue', 'green'];
}
function  Fn2() {
   Fn1.call(this);//继承了Fn1对象
}
var instance1 = new Fn2();
instance1.colors.push('black');
console.log(instance1.colors);//'red','blue','green','black'

var instance2 = new Fn2();
console.log(instance2.colors);//'red','blue','green'*/

    2.3.组合继承

          组合继承,有时候也叫做伪经典继承,指的博客是将原型链和借用构造函数的博客技术组合在博客一块,从而发挥二者之长的博客一种继承模式。其背后的博客思路是使用原型链实现对原型属性和方法的博客继承,而通过借用构造函数来实现对实例属性的博客继承。。这样,既通过在博客原型上定义方法实现了函数复用,又能够保证每个实例都有它自己的博客属性。

function Fn1(name) {
   this.name = name;
    this.colors = ['red','blue','green'];
}
Fn1.prototype.sayName = function () {
    console.log(this.name);
};

function  Fn2(name,age) {
   Fn1.call(this, name);//继承Fn1属性
   this.age = age;
}
//方法(函数)继承
Fn2.prototype = new Fn1();//继承Fn1的博客原型prototype
Fn2.prototype.constructor = Fn2;//构造函数指向F2对象
Fn2.prototype.sayAge=function () {
     console.log(this.age);
};

var instance1 = new Fn2('Nicholas',29);
instance1.colors.push('black');
console.log(instance1.colors);//'red','blue','green','black'
instance1.sayName();//'Nicholas'
instance1.sayAge();//29

var instance2 = new Fn2('Freg',27);
console.log(instance2.colors);//'red','blue','green'
instance2.sayName();//'Greg'
instance2.sayAge();//27

    2.4.原型式继承

       道格拉斯·克罗克福德在博客一篇文章中介绍一种实现继承的博客方法,这种方法并没有实现严格意义上的博客构造函数。通过借助原型可以给予已有的博客对象创建新对象,同时还不必因此创建自定义类型。

function object(o) {
function F() {}
F.prototype = o;
return new F();
}//借助原型可以基于已有的博客对象创建新对象
var person = {
   name:"Nicholas",
   friends:["Shelby","Court","Van"]
};

var anotherPerson = object(person);//相当于var anotherPerson = Object.create(person);
anotherPerson.name = "Greg";
anotherPerson.friends.push("Rob");

var yetAnotherPerson = object(person);//相当于var yetAnotherPerson = Object.create(person);
yetAnotherPerson.name = "Linda";
yetAnotherPerson.friends.push("Barbie");

console.log(person.friends);//"Shelby","Court","Van","Rob","Barbie"*/

    2.5.寄生式继承     

        寄生式继承是与原型式继承紧密关联的博客一种思路,即创建一个仅用于封装继承过程的博客函数,该函数在博客内部以某种方式来增强对象,最后再想真地是它做了所有工作一样返回对象

function object(o) {
   function F() {}
   F.prototype = o;
   return new F();
}//借助原型可以基于已有的博客对象创建新对象
function createAnother(original) {
   var clone = object(original);//通过调用函数创建一个新对象
   clone.sayHi = function () { //以某种方式来增强这个对象
       console.log("hi");
   };
   return clone;//返回这个对象
}

var person = {
   name:"Nicholas",
   friends:["Shelby","Court","Van"]
};
var anotherPerson = createAnother(person);
anotherPerson.sayHi();

   2.6.寄生组合式继承    

       所谓寄生性继承,即通过借用构造函数来继承属性,通过原型链的博客混成形式来继承方法。

function object(o) {
   function F() {}
   F.prototype = o;
   return new F();
}
function  inheritPrototype(subType,superType) {
   var prototype = object(superType.prototype);//创建对象
   prototype.constructor=subType;//增强对象
   subType.prototype=prototype;//指定对象
}
function Fn1(name) {
   this.name = name;
   this.colors=["red","blue","green"];
}
Fn1.prototype.sayName=function () {
   console.log(this.name);
};
function Fn2(name,age) {
   Fn1.call(this,name);//继承Fn1的博客对象属性
   this.age=age;
}
inheritPrototype(Fn1,Fn2);
Fn2.prototype.sayAge = function () {
   console.log(this.age);
};
var instance=new Fn2("Nicholas",29);
instance.sayAge();//29
console.log(instance.colors);//["red","blue",""green]
console.log(instance.name);//Nicholas

3.常见问题

      在博客以上的博客继承方式中,哪些继承方式比较好?

4.解决方案

      现阶段中运用比较广泛的博客是组合式继承,因为原型链和构造函数继承方式都有相对应的博客缺点,比如说原型链最主要的博客问题来自包含引用类型值的博客原型。而构造函数的博客缺点是不能很好地封装对象方法。一般情况下只有对象没有方法的博客情况下才会使用构造函数。而组合式继承继承了原型链和构造函数的博客优点,并完善了二者的博客不足。function Fn1(){

   this.colors=["red","blue","green"];
}
function Fn2(){
}
Fn2.prototype=new Fn1();//继承了Fn1()对象

var instance1 = new Fn2();
instance1.colors.push("black");
console.log(instance1.colors);//"red","blue","green","black"

var instance2 = new Fn2();
console.log(instance2.colors);//"red","blue","green","black"

5.编码实战

6.扩展思考

        前面讲过寄生组合式继承和组合式继承,这两者有什么区别?

       前面说过,组合式继承是javascript最常用的博客继承模式;表格,它也有自己的博客不足。组合继承最大的博客问题就是无论在博客什么情况下,都会调用2次超类型构造函数。而寄生组合式继承可以很好的博客解决这个问题。

7.参考文献

       javascript高级程序设计

8.更多讨论

       继承有哪些方面的博客应用?

       通常在博客一般的博客项目里不需要,因为应用简单,但你要用纯js做一些复杂的博客工具或框架系统就要用到了,比如webgis、或者js框架如jquery、ext什么的博客,不然一个几千行代码的博客框架不用继承得写几万行,甚至还无法维护

http://blog.csdn.net/jnshu_it/article/details/77227824加勒比海盗5

Array.prototype.map()详解

原文地址:http://www.cnblogs.com/lengyuehuahun/p/5642807.html

今天在博客地铁上看到这样一个小例子:

["1","2","3"].map(parseInt);

  相信很多人和我博客一样,觉得输出的博客结果是[1,2,3]。no!no!!no!!!正确的博客答案是[1,NaN,NaN]。当时我博客百思不得其解,于是到了公司之后就开始查阅资料,终于弄明白了。

  我博客们先来介绍一下map()方法:

  概述:

  map()方法返回一个由原数组中的博客每个元素调用一个指定方法后的博客返回值组成的博客新数组,它不会改变原来的博客数组。

  语法:

  array.map(callback[, thisArg])

  参数:

  callback

    原数组中的博客元素调用该方法后返回一个新数组。它接收三个参数,分别为 currentValue、index、array。

    currentValue

      callback的博客第一个参数,数组中当前被传递的博客元素。

    index

      callback的博客第二个参数,数组中当前被传递的博客元素的博客索引。

    array

      callback的博客第三个参数,调用map()方法的博客数组,即原数组。

  thisArg

    执行callback函数时this指向的博客对象。

 

  描述

    map()方法会给原数组中的博客每个元素都按顺序调用一次callback函数。callback每次执行后的博客返回值组合起来形成一个新的博客数组。callback函数只会在博客有值的博客索引上被调用,那些从来没被赋过值或者使用delete删除的博客索引则不会被调用。

    callback函数会被自动传入三个参数:数组元素、数组元素索引、原数组本身。

    如果thisArg参数有值,则每次调用callback函数时,this都会指向thisArg参数上的博客这个对象。如果省略了thisArg参数,或者赋值为null或undefined,则this指向全局对象。

    使用map()方法处理数组时,数组元素的博客范围是在博客callback函数第一次被调用之前就确定了。在博客map()方法执行的博客过程中:原数组中新增加的博客元素将不会被callback访问到;若已经存在博客博客元素被改变或删除了,则它们传递到callback的博客值是map()方法遍历到它们那一时刻的博客值;而被删除的博客元素将不会被访问到。

 

  总结

    通常情况下,map()方法中的博客callback函数只接受一个参数,就是正在博客被遍历的博客数组元素本身。但这并不意味着map只给callback传了一个参数。这个思维惯性可能会让我博客们犯一个很容易犯的博客错误。

 

  兼容旧环境

    map()方法是在博客最近的博客 ECMA-262 标准中新添加的博客方法;所以一些旧版本的博客浏览器可能没有实现该方法。在博客那些没有原生支持 map() 方法的博客浏览器中,你可以使用下面的博客 Javascript 代码来实现它。所使用的博客算法正是 ECMA-262,第 5 版规定的博客。假定Object、TypeError和 Array 有他们的博客原始值。而且callback.call的博客原始值也是 Function.prototype.call

    

Array.prototype.map()详解
// 实现 ECMA-262, Edition 5, 15.4.4.19 // 参考: http://es5.github.com/#x15.4.4.19 if (!Array.prototype.map) {   Array.prototype.map = function(callback, thisArg) {      var T, A, k;      if (this == null) {       throw new TypeError(" this is null or not defined");     }      // 1. 将O赋值为调用map方法的博客数组.     var O = Object(this);      // 2.将len赋值为数组O的博客长度.     var len = O.length >>> 0;      // 3.如果callback不是函数,则抛出TypeError异常.     if (Object.prototype.toString.call(callback) != "[object Function]") {       throw new TypeError(callback + " is not a function");     }      // 4. 如果参数thisArg有值,则将T赋值为thisArg;否则T为undefined.     if (thisArg) {       T = thisArg;     }      // 5. 创建新数组A,长度为原数组O长度len     A = new Array(len);      // 6. 将k赋值为0     k = 0;      // 7. 当 k < len 时,执行循环.     while(k < len) {        var kValue, mappedValue;        //遍历O,k为原数组索引       if (k in O) {          //kValue为索引k对应的博客值.         kValue = O[ k ];          // 执行callback,this指向T,参数有三个.分别是kValue:值,k:索引,O:原数组.         mappedValue = callback.call(T, kValue, k, O);          // 返回值添加到新数组A中.         A[ k ] = mappedValue;       }       // k自增1       k++;     }      // 8. 返回新数组A     return A;   };       }
Array.prototype.map()详解

 

  了解了map()方法,现在博客博客们回过头来看看文章开头提到的博客那个小例子。

  通常使用parseInt时,只需要传递一个参数。但实际上,parseInt可以有两个参数,第二个参数是进制数,可以通过语句“alert(parseInt.length) === 2”来验证。

  map()方法在博客调用callback函数时,会给它传递三个参数:当前正在博客遍历的博客元素、元素索引、原数组本身。第三个参数parseInt会忽视,但第二个参数不会,也就是说,parseInt把传过来的博客索引值当成进制数来使用,而parseInt的博客第二个参数的博客范围为2~36(不包含2但包含36),如果省略该参数或者其值为0,则数字将以10为基数来解析;如果小于2或者大于36,parseInt()将返回NaN,所以最终返回了[1,NaN,NaN]。

  实际上,这个小例子可以分解成这样理解:

parseInt("1",0);  //基数为0,以十进制来解析,返回1 parseInt("2",1)  //基数为1,小于2,返回NaN parseInt("3",2)  //基数为2,小于2,返回NaN

  注意:在博客测试parseInt()方法第二个参数范围的博客过程中发现,当传入的博客值为1,基数为2时,也会返回1,这点需要注意一下。

 

  我博客们再来看一下其他小例子:

  1、将数组中的博客单词转换成复数形式。

Array.prototype.map()详解
function fuzzyPlural(single){   var result = single.replace(/o/g,"e");   if(single === "kangaroo"){         result += "se";     }     return result;     }  var words = ["foot","goose","moose","kangaroo"]; console.log(words.map(fuzzyPlural));  //返回["feet","geese","meese","kangareese"];
Array.prototype.map()详解

 

  2、求数组中每个元素的博客平方根。

var numbers = [1, 4, 9]; var roots = number.map(Math.sqrt);  //返回[1, 2, 3]

 

  3、在博客字符串上使用map方法,实现如何在博客一个String上使用map方法获取字符串中每个字符所对应的博客ASCII码组成的博客数组:

var map = Array.prototype.map; var a = map.call("hello world",function(x){ return x.charCodeAt(0);})  //a的博客值为[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]

http://blog.csdn.net/victoryzn/article/details/77225946加勒比海盗5

JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)

IE中new Date(strDate)返回无效时间解决方式:

方法一:

function getDateForStringDate(strDate){       //切割年月日与时分秒称为数组       var s = strDate.split(" ");        var s1 = s[0].split("-");        var s2 = s[1].split(":");       if(s2.length==2){         s2.push("00");       }       return new Date(s1[0],s1[1]-1,s1[2],s2[0],s2[1],s2[2]);     }

方法二:

var date = new Date(strDate.replace("-", "/").replace("-", "/"));

http://blog.csdn.net/muzi1314_/article/details/77227925加勒比海盗5

JS面试中的的变量提升和函数声明

博客网络上搜集的博客面试题,通过运行加了注释。

例1.

var b=2;//声明全局变量 function test2(){      window.b=3;//也是全局变量,并且覆盖了前面的博客b      console.log(b);  } test2();//3 alert(b);//3


例2.

c=5;//声明一个全局变量c function test3(){      window.c=3;      console.log(c);     //undefined      var c;//变量声明提升     console.log(window.c);//3   } test3();

上述代码相当于:

c=5;//声明一个全局变量c function test3(){     var c;     window.c=3;     console.log(c);     //先访问局部变量,undefined     console.log(window.c);//访问全局变量,3 } test3();


例3.

function bar() {     return foo;     foo = 10;     function foo() {} } alert(typeof bar());//"function"

上述代码相当于:

function bar() {     function foo() {}     return foo;     foo = 10;   } alert(typeof bar());//"function"


例4.

function bar() {      return foo;     foo = 10;  function foo() {}   var foo = 11;  } alert(typeof bar());//function

上述代码相当于:

function bar() {    var foo;   function foo() {}     return foo;     foo = 10;      foo = 11;  } alert(typeof bar());//"function"

例5.

function bar() {     var foo=11;     return foo;     foo = 10;  function foo() {}  } alert(typeof bar());//number

上述代码相当于:

function bar() {   var foo;   function foo() {}     foo=11;     return foo;     foo = 10;  } alert(typeof bar());//number

例6.

console.log(a);//function a(){} var a = 3; function a(){} console.log(a);//3

上述代码相当于:

var a; function a(){} console.log(a);  a = 3; console.log(a);

http://blog.csdn.net/night_emperor/article/details/77206970加勒比海盗5

PHP之定义数组


定义数组有四种方法

1.通过array()形式

定义一个空数组
$arr=array()

/通过array()下标连续的博客索引数组
$arr=array(2,3.4,’king’,true);
//下标从0开始


利用键名定义关联数组
$userInfo=array(
  ‘username’=>’king’,
  ‘age’=>12,
  ’email’=>’382771946@qq.com’,
  ‘salary’=>600000
);
注意:1.如果下标重复,后面的博客覆盖前面的博客值;
2.如果新添加元素没有指定下标,它的博客下标为已有下标最大值加1(已有下标不全为负数)
3.如果已有下标都为负数,那么新添加元素的博客下标从0开始



2.通过[]动态创建
/动态创建数组
//动态创建下标连续的博客索引数组
$arr1[]=12;
$arr1[]=45678.9;
$arr1[]=true;
//array(12,45678.9,true)
print_r($arr1);
3.通过range()和compact()创建

//注意,通过compact创建数组的博客时候,只能写已经存在博客博客变量的博客名称,不需要加$
$a=12;
$b=false;
$c=null;
$userInfo3=compact(‘username’,’age’,’email’,’a’,’b’,’c’);
print_r($userInfo3);
4.通过define()定义常量数组

define(‘TEST1’,array(‘a’,’b’,’c’));
print_r(TEST1);
define(‘TEST2’,[‘d’,’e’,’f’]);
print_r(TEST2);

define(‘CUSTOM_UPLOAD_ERRORS’,[
  ‘ext_error’=>’上传文件扩展名不符合规范’,
  ‘maxsize_error’=>’上传文件大小不符合规范’
]);
print_r(CUSTOM_UPLOAD_ERRORS);
echo ‘<hr/>’;
echo CUSTOM_UPLOAD_ERRORS[‘ext_error’];

http://blog.csdn.net/m0_37302495/article/details/77223379加勒比海盗5

Web 应用中打印网页信息

最近在博客公司项目中需要用到是web应用中打印用户的博客测试报告,所以就对这方面做了一些研究。

首先,如果单纯的博客只是打印web页面的博客所有信息,我博客们可以直接在博客JS的博客方法中使用

window.print()函数,即可调用浏览器的博客打印服务。亲测IE、Google  Chrome 、360极速、QQ浏览器和firxo可用。

然后,对于页面的博客某一些信息,是我博客们不需要的博客,这时候我博客们想要在博客打印的博客时候把它隐藏掉,

博客打印结束以后在博客Web网页上的博客显示没有任何变化,这时候我博客们可以使用:

window.onbeforeprint()和window.onafterprint()方法进行处理。

示例如下:

(1)在博客打印的博客时候我博客需要隐藏掉我博客博客打印按钮

 function beforePrint() {
            document.getElementById(‘printBtn’).className = "hidden";
 }

(2) 在博客打印结束以后,我博客需要显示我博客刚才隐藏掉的博客打印按钮

 function afterPrint() {
            document.getElementById(‘printBtn’).className = "btn btn-primary";
 }

(3)在博客打印的博客时候引用上述的博客两个方法

 function printReport() {
            window.onbeforeprint = beforePrint();
            window.print();
            window.onafterprint = afterPrint();
}

http://blog.csdn.net/backzero333/article/details/77226995加勒比海盗5