PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
通过curl_setopt()函数可以方便快捷的抓取网页(采集很方便),curl_setopt 是php的一个扩展库
使用条件:需要在php.ini 中配置开启。(PHP 4 >= 4.0.2)
//取消下面的注释
extension=php_curl.dll
在Linux下面,需要重新编译PHP了,编译时,你需要打开编译参数——在configure命令上加上“–with-curl” 参数。
1、 一个抓取网页的简单案例:
- // 创建一个新cURL资源
- $ch = curl_init();
- // 设置URL和相应的选项
- curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com/");
- curl_setopt($ch, CURLOPT_HEADER, false);
- // 抓取URL并把它传递给浏览器
- curl_exec($ch);
- //关闭cURL资源,并且释放系统资源
- curl_close($ch);
2、POST数据案例:
- // 创建一个新cURL资源
- $ch = curl_init();
- $data = 'phone='. urlencode($phone);
- // 设置URL和相应的选项
- curl_setopt($ch, CURLOPT_URL, "http://www.post.com/");
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- // 抓取URL并把它传递给浏览器
- curl_exec($ch);
- //关闭cURL资源,并且释放系统资源
- curl_close($ch);
3、关于SSL和Cookie
关于SSL也就是HTTPS协议,你只需要把CURLOPT_URL连接中的http://变成https://就可以了。当然,还有一个参数叫CURLOPT_SSL_VERIFYHOST可以设置为验证站点。
关于Cookie,你需要了解下面三个参数:
CURLOPT_COOKIE,在当面的会话中设置一个cookie
CURLOPT_COOKIEJAR,当会话结束的时候保存一个Cookie
CURLOPT_COOKIEFILE,Cookie的文件。
PS:新浪微博登陆API部分截取(部分我增加了点注释,全当参数翻译下。哈哈) 有兴趣的自己研究,自己挪为己用。嘿嘿
- /**
- * Make an HTTP request
- *
- * @return string API results
- * @ignore
- */
- function http($url, $method, $postfields = NULL, $headers = array()) {
- $this->http_info = array();
- $ci = curl_init();
- /* Curl settings */
- curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);//让cURL自己判断使用哪个版本
- curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);//在HTTP请求中包含一个"User-Agent: "头的字符串。
- curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);//在发起连接前等待的时间,如果设置为0,则无限等待
- curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);//设置cURL允许执行的最长秒数
- curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);//返回原生的(Raw)输出
- curl_setopt($ci, CURLOPT_ENCODING, "");//HTTP请求头中"Accept-Encoding: "的值。支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",请求头会发送所有支持的编码类型。
- curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);//禁用后cURL将终止从服务端进行验证
- curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));//第一个是cURL的资源句柄,第二个是输出的header数据
- curl_setopt($ci, CURLOPT_HEADER, FALSE);//启用时会将头文件的信息作为数据流输出
- switch ($method) {
- case 'POST':
- curl_setopt($ci, CURLOPT_POST, TRUE);
- if (!empty($postfields)) {
- curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
- $this->postdata = $postfields;
- }
- break;
- case 'DELETE':
- curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
- if (!empty($postfields)) {
- $url = "{$url}?{$postfields}";
- }
- }
- if ( isset($this->access_token) && $this->access_token )
- $headers[] = "Authorization: OAuth2 ".$this->access_token;
- $headers[] = "API-RemoteIP: " . $_SERVER['REMOTE_ADDR'];
- curl_setopt($ci, CURLOPT_URL, $url );
- curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );
- curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );
- $response = curl_exec($ci);
- $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
- $this->http_info = array_merge($this->http_info, curl_getinfo($ci));
- $this->url = $url;
- if ($this->debug) {
- echo "=====post data======\r\n";
- var_dump($postfields);
- echo '=====info====='."\r\n";
- print_r( curl_getinfo($ci) );
- echo '=====$response====='."\r\n";
- print_r( $response );
- }
- curl_close ($ci);
- return $response;
- }
更详细的参数说明参考:http://cn2.php.net/curl_setopt
Mysql函数GROUP_CONCAT
GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat。
语法:
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC |DESC] [,col_name ...]] [SEPARATOR str_val]) 1.例如: SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHEREstudent_id=2 GROUP BY student_id; +------------+---------+ | student_id | courses | +------------+---------+ | 2 | 3,4,5 | +------------+---------+ 这 就不需要用php循环了 $row = $pdo->query("SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id"); $result = explode(',', $row['courses']);
2.当然分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“|||”,则使用SEPARATOR来指定,例如:
SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '|||') AS courses FROM student_coursesWHERE student_id=2 GROUP BY student_id; +------------+---------+ | student_id | courses | +------------+---------+ | 2 | 3|||4|||5 | +------------+---------+ 3.除此之外,还可以对这个组的值来进行排序再连接成字符串,例如按courses_id降序来排: SELECT student_id, GROUP_CONCAT(courses_id ORDER BY courses_id DESC) AS courses FROMstudent_courses WHERE student_id=2 GROUP BY student_id; +------------+---------+ | student_id | courses | +------------+---------+ | 2 | 5,4,3 | +------------+---------+ 4.需要注意的:
a.int字段的连接陷阱
当你用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来,
否则在你执行后(ExecuteScalar或者其它任何执行SQL返回结果的方法)返回的将不是一个逗号隔开的串,
而是byte[]。
该问题当你在SQLyog等一些工具中是体现不出来的,所以很难发现。
select group_concat(ipaddress) from t_ip 返回逗号隔开的串
select group_concat(id) from t_ip 返回byte[]
select group_concat(CAST(id as char)) from t_dep 返回逗号隔开的串
select group_concat(Convert(id , char)) from t_dep 返回逗号隔开的串
附Cast,convert的用法:
CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。
这个类型 可以是以下值其中的 一个:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
b.长度陷阱
用了group_concat后,select里如果使用了limit是不起作用的.
用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。
使用group_concat_max_len系统变量,你可以设置允许的最大长度。
程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度, 则结果被截至这个最大长度。
在SQLyog中执行 SET GLOBAL group_concat_max_len = 10 后,重新打开SQLyog,设置就会生效。
Excel常用函数大全
我们在使用Excel制作表格整理数据的时候,常常要用到它的函数功能来自动统计处理表格中的数据。这里整理了Excel中使用频率最高的函数的功能、使用方法,以及这些函数在实际应用中的实例剖析,并配有详细的介绍。
1、ABS函数
函数名称:ABS
主要功能:求出相应数字的绝对值。
使用格式:ABS(number)
参数说明:number代表需要求绝对值的数值或引用的单元格。
应用举例:如果在B2单元格中输入公式:=ABS(A2),则在A2单元格中无论输入正数(如100)还是负数(如-100),B2中均显示出正数(如100)。
特别提醒:如果number参数不是数值,而是一些字符(如A等),则B2中返回错误值“#VALUE!”。
2、AND函数
函数名称:AND
主要功能:返回逻辑值:如果所有参数值均为逻辑“真(TRUE)”,则返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。
使用格式:AND(logical1,logical2, ...)
参数说明:Logical1,Logical2,Logical3……:表示待测试的条件值或表达式,最多这30个。
应用举例:在C5单元格输入公式:=AND(A5>=60,B5>=60),确认。如果C5中返回TRUE,说明A5和B5中的数值均大于等于60,如果返回FALSE,说明A5和B5中的数值至少有一个小于60。
特别提醒:如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。
3、AVERAGE函数
函数名称:AVERAGE
主要功能:求出所有参数的算术平均值。
使用格式:AVERAGE(number1,number2,……)
参数说明:number1,number2,……:需要求平均值的数值或引用单元格(区域),参数不超过30个。
应用举例:在B8单元格中输入公式:=AVERAGE(B7:D7,F7:H7,7,8),确认后,即可求出B7至D7区域、F7至H7区域中的数值和7、8的平均值。
特别提醒:如果引用区域中包含“0”值单元格,则计算在内;如果引用区域中包含空白或字符单元格,则不计算在内。
4、COLUMN 函数
函数名称:COLUMN
主要功能:显示所引用单元格的列标号值。
使用格式:COLUMN(reference)
参数说明:reference为引用的单元格。
应用举例:在C11单元格中输入公式:=COLUMN(B11),确认后显示为2(即B列)。
特别提醒:如果在B11单元格中输入公式:=COLUMN(),也显示出2;与之相对应的还有一个返回行标号值的函数——ROW(reference)。
5、CONCATENATE函数
函数名称:CONCATENATE
主要功能:将多个字符文本或单元格中的数据连接在一起,显示在一个单元格中。
使用格式:CONCATENATE(Text1,Text……)
参数说明:Text1、Text2……为需要连接的字符文本或引用的单元格。
应用举例:在C14单元格中输入公式:=CONCATENATE(A14,"@",B14,".com"),确认后,即可将A14单元格中字符、@、B14单元格中的字符和.com连接成一个整体,显示在C14单元格中。
特别提醒:如果参数不是引用的单元格,且为文本格式的,请给参数加上英文状态下的双引号,如果将上述公式改为:=A14&"@"&B14&".com",也能达到相同的目的。
6、COUNTIF函数
函数名称:COUNTIF
主要功能:统计某个单元格区域中符合指定条件的单元格数目。
使用格式:COUNTIF(Range,Criteria)
参数说明:Range代表要统计的单元格区域;Criteria表示指定的条件表达式。
应用举例:在C17单元格中输入公式:=COUNTIF(B1:B13,">=80"),确认后,即可统计出B1至B13单元格区域中,数值大于等于80的单元格数目。
特别提醒:允许引用的单元格区域中有空白单元格出现。
7、DATE函数
函数名称:DATE
主要功能:给出指定数值的日期。
使用格式:DATE(year,month,day)
参数说明:year为指定的年份数值(小于9999);month为指定的月份数值(可以大于12);day为指定的天数。
应用举例:在C20单元格中输入公式:=DATE(2003,13,35),确认后,显示出2004-2-4。
特别提醒:由于上述公式中,月份为13,多了一个月,顺延至2004年1月;天数为35,比2004年1月的实际天数又多了4天,故又顺延至2004年2月4日。
8、函数名称:DATEDIF
主要功能:计算返回两个日期参数的差值。
使用格式:=DATEDIF(date1,date2,"y")、=DATEDIF(date1,date2,"m")、=DATEDIF(date1,date2,"d")
参数说明:date1代表前面一个日期,date2代表后面一个日期;y(m、d)要求返回两个日期相差的年(月、天)数。
应用举例:在C23单元格中输入公式:=DATEDIF(A23,TODAY(),"y"),确认后返回系统当前日期[用TODAY()表示)与A23单元格中日期的差值,并返回相差的年数。
特别提醒:这是Excel中的一个隐藏函数,在函数向导中是找不到的,可以直接输入使用,对于计算年龄、工龄等非常有效。
9、DAY函数
函数名称:DAY
主要功能:求出指定日期或引用单元格中的日期的天数。
使用格式:DAY(serial_number)
参数说明:serial_number代表指定的日期或引用的单元格。
应用举例:输入公式:=DAY("2003-12-18"),确认后,显示出18。
特别提醒:如果是给定的日期,请包含在英文双引号中。
10、DCOUNT函数
函数名称:DCOUNT
主要功能:返回数据库或列表的列中满足指定条件并且包含数字的单元格数目。
使用格式:DCOUNT(database,field,criteria)
参数说明:Database表示需要统计的单元格区域;Field表示函数所使用的数据列(在第一行必须要有标志项);Criteria包含条件的单元格区域。
应用举例:如图1所示,在F4单元格中输入公式:=DCOUNT(A1:D11,"语文",F1:G2),确认后即可求出“语文”列中,成绩大于等于70,而小于80的数值单元格数目(相当于分数段人数)。
特别提醒:如果将上述公式修改为:=DCOUNT(A1:D11,,F1:G2),也可以达到相同目的。
11、FREQUENCY函数
函数名称:FREQUENCY
主要功能:以一列垂直数组返回某个区域中数据的频率分布。
使用格式:FREQUENCY(data_array,bins_array)
参数说明:Data_array表示用来计算频率的一组数据或单元格区域;Bins_array表示为前面数组进行分隔一列数值。
应用举例:如图2所示,同时选中B32至B36单元格区域,输入公式:=FREQUENCY(B2:B31,D2:D36),输入完成后按下“Ctrl+Shift+Enter”组合键进行确认,即可求出B2至B31区域中,按D2至D36区域进行分隔的各段数值的出现频率数目(相当于统计各分数段人数)。
特别提醒:上述输入的是一个数组公式,输入完成后,需要通过按“Ctrl+Shift+Enter”组合键进行确认,确认后公式两端出现一对大括号({}),此大括号不能直接输入。
12、IF函数
函数名称:IF
主要功能:根据对指定条件的逻辑判断的真假结果,返回相对应的内容。
使用格式:=IF(Logical,Value_if_true,Value_if_false)
参数说明:Logical代表逻辑判断表达式;Value_if_true表示当判断条件为逻辑“真(TRUE)”时的显示内容,如果忽略返回“TRUE”;Value_if_false表示当判断条件为逻辑“假(FALSE)”时的显示内容,如果忽略返回“FALSE”。
应用举例:在C29单元格中输入公式:=IF(C26>=18,"符合要求","不符合要求"),确信以后,如果C26单元格中的数值大于或等于18,则C29单元格显示“符合要求”字样,反之显示“不符合要求”字样。
特别提醒:本文中类似“在C29单元格中输入公式”中指定的单元格,读者在使用时,并不需要受其约束,此处只是配合本文所附的实例需要而给出的相应单元格,具体请大家参考所附的实例文件。
13、INDEX函数
函数名称:INDEX
主要功能:返回列表或数组中的元素值,此元素由行序号和列序号的索引值进行确定。
使用格式:INDEX(array,row_num,column_num)
参数说明:Array代表单元格区域或数组常量;Row_num表示指定的行序号(如果省略row_num,则必须有 column_num);Column_num表示指定的列序号(如果省略column_num,则必须有 row_num)。
应用举例:如图3所示,在F8单元格中输入公式:=INDEX(A1:D11,4,3),确认后则显示出A1至D11单元格区域中,第4行和第3列交叉处的单元格(即C4)中的内容。
特别提醒:此处的行序号参数(row_num)和列序号参数(column_num)是相对于所引用的单元格区域而言的,不是Excel工作表中的行或列序号。
14、INT函数
函数名称:INT
主要功能:将数值向下取整为最接近的整数。
使用格式:INT(number)
参数说明:number表示需要取整的数值或包含数值的引用单元格。
应用举例:输入公式:=INT(18.89),确认后显示出18。
特别提醒:在取整时,不进行四舍五入;如果输入的公式为=INT(-18.89),则返回结果为-19。
15、ISERROR函数
函数名称:ISERROR
主要功能:用于测试函数式返回的数值是否有错。如果有错,该函数返回TRUE,反之返回FALSE。
使用格式:ISERROR(value)
参数说明:Value表示需要测试的值或表达式。
应用举例:输入公式:=ISERROR(A35/B35),确认以后,如果B35单元格为空或“0”,则A35/B35出现错误,此时前述函数返回TRUE结果,反之返回FALSE。
特别提醒:此函数通常与IF函数配套使用,如果将上述公式修改为:=IF(ISERROR(A35/B35),"",A35/B35),如果B35为空或“0”,则相应的单元格显示为空,反之显示A35/B35的结果。
16、LEFT函数
函数名称:LEFT
主要功能:从一个文本字符串的第一个字符开始,截取指定数目的字符。
使用格式:LEFT(text,num_chars)
参数说明:text代表要截字符的字符串;num_chars代表给定的截取数目。
应用举例:假定A38单元格中保存了“我喜欢天极网”的字符串,我们在C38单元格中输入公式:=LEFT(A38,3),确认后即显示出“我喜欢”的字符。
特别提醒:此函数名的英文意思为“左”,即从左边截取,Excel很多函数都取其英文的意思。
17、LEN函数
函数名称:LEN
主要功能:统计文本字符串中字符数目。
使用格式:LEN(text)
参数说明:text表示要统计的文本字符串。
应用举例:假定A41单元格中保存了“我今年28岁”的字符串,我们在C40单元格中输入公式:=LEN(A40),确认后即显示出统计结果“6”。
特别提醒:LEN要统计时,无论中全角字符,还是半角字符,每个字符均计为“1”;与之相对应的一个函数——LENB,在统计时半角字符计为“1”,全角字符计为“2”。
18、MATCH函数
函数名称:MATCH
主要功能:返回在指定方式下与指定数值匹配的数组中元素的相应位置。
使用格式:MATCH(lookup_value,lookup_array,match_type)
参数说明:Lookup_value代表需要在数据表中查找的数值;
Lookup_array表示可能包含所要查找的数值的连续单元格区域;
Match_type表示查找方式的值(-1、0或1)。
如果match_type为-1,查找大于或等于 lookup_value的最小数值,Lookup_array 必须按降序排列;
如果match_type为1,查找小于或等于 lookup_value 的最大数值,Lookup_array 必须按升序排列;
如果match_type为0,查找等于lookup_value 的第一个数值,Lookup_array 可以按任何顺序排列;如果省略match_type,则默认为1。
应用举例:如图4所示,在F2单元格中输入公式:=MATCH(E2,B1:B11,0),确认后则返回查找的结果“9”。
特别提醒:Lookup_array只能为一列或一行。
19、MAX函数
函数名称:MAX
主要功能:求出一组数中的最大值。
使用格式:MAX(number1,number2……)
参数说明:number1,number2……代表需要求最大值的数值或引用单元格(区域),参数不超过30个。
应用举例:输入公式:=MAX(E44:J44,7,8,9,10),确认后即可显示出E44至J44单元和区域和数值7,8,9,10中的最大值。
特别提醒:如果参数中有文本或逻辑值,则忽略。
20、MID函数
函数名称:MID
主要功能:从一个文本字符串的指定位置开始,截取指定数目的字符。
使用格式:MID(text,start_num,num_chars)
参数说明:text代表一个文本字符串;start_num表示指定的起始位置;num_chars表示要截取的数目。
应用举例:假定A47单元格中保存了“我喜欢天极网”的字符串,我们在C47单元格中输入公式:=MID(A47,4,3),确认后即显示出“天极网”的字符。
特别提醒:公式中各参数间,要用英文状态下的逗号“,”隔开。
21、MIN函数
函数名称:MIN
主要功能:求出一组数中的最小值。
使用格式:MIN(number1,number2……)
参数说明:number1,number2……代表需要求最小值的数值或引用单元格(区域),参数不超过30个。
应用举例:输入公式:=MIN(E44:J44,7,8,9,10),确认后即可显示出E44至J44单元和区域和数值7,8,9,10中的最小值。
特别提醒:如果参数中有文本或逻辑值,则忽略。
22、MOD函数
函数名称:MOD
主要功能:求出两数相除的余数。
使用格式:MOD(number,divisor)
参数说明:number代表被除数;divisor代表除数。
应用举例:输入公式:=MOD(13,4),确认后显示出结果“1”。
特别提醒:如果divisor参数为零,则显示错误值“#DIV/0!”;MOD函数可以借用函数INT来表示:上述公式可以修改为:=13-4*INT(13/4)。
23、MONTH函数
函数名称:MONTH
主要功能:求出指定日期或引用单元格中的日期的月份。
使用格式:MONTH(serial_number)
参数说明:serial_number代表指定的日期或引用的单元格。
应用举例:输入公式:=MONTH("2003-12-18"),确认后,显示出11。
特别提醒:如果是给定的日期,请包含在英文双引号中;如果将上述公式修改为:=YEAR("2003-12-18"),则返回年份对应的值“2003”。
24、NOW函数
函数名称:NOW
主要功能:给出当前系统日期和时间。
使用格式:NOW()
参数说明:该函数不需要参数。
应用举例:输入公式:=NOW(),确认后即刻显示出当前系统日期和时间。如果系统日期和时间发生了改变,只要按一下F9功能键,即可让其随之改变。
特别提醒:显示出来的日期和时间格式,可以通过单元格格式进行重新设置。
25、OR函数
函数名称:OR
主要功能:返回逻辑值,仅当所有参数值均为逻辑“假(FALSE)”时返回函数结果逻辑“假(FALSE)”,否则都返回逻辑“真(TRUE)”。
使用格式:OR(logical1,logical2, ...)
参数说明:Logical1,Logical2,Logical3……:表示待测试的条件值或表达式,最多这30个。
应用举例:在C62单元格输入公式:=OR(A62>=60,B62>=60),确认。如果C62中返回TRUE,说明A62和B62中的数值至少有一个大于或等于60,如果返回FALSE,说明A62和B62中的数值都小于60。
特别提醒:如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。
26、RANK函数
函数名称:RANK
主要功能:返回某一数值在一列数值中的相对于其他数值的排位。
使用格式:RANK(Number,ref,order)
参数说明:Number代表需要排序的数值;ref代表排序数值所处的单元格区域;order代表排序方式参数(如果为“0”或者忽略,则按降序排名,即数值越大,排名结果数值越小;如果为非“0”值,则按升序排名,即数值越大,排名结果数值越大;)。
应用举例:如在C2单元格中输入公式:=RANK(B2,$B$2:$B$31,0),确认后即可得出丁1同学的语文成绩在全班成绩中的排名结果。
特别提醒:在上述公式中,我们让Number参数采取了相对引用形式,而让ref参数采取了绝对引用形式(增加了一个“$”符号),这样设置后,选中C2单元格,将鼠标移至该单元格右下角,成细十字线状时(通常称之为“填充柄”),按住左键向下拖拉,即可将上述公式快速复制到C列下面的单元格中,完成其他同学语文成绩的排名统计。
27、RIGHT函数
函数名称:RIGHT
主要功能:从一个文本字符串的最后一个字符开始,截取指定数目的字符。
使用格式:RIGHT(text,num_chars)
参数说明:text代表要截字符的字符串;num_chars代表给定的截取数目。
应用举例:假定A65单元格中保存了“我喜欢天极网”的字符串,我们在C65单元格中输入公式:=RIGHT(A65,3),确认后即显示出“天极网”的字符。
特别提醒:Num_chars参数必须大于或等于0,如果忽略,则默认其为1;如果num_chars参数大于文本长度,则函数返回整个文本。
28、SUBTOTAL函数
函数名称:SUBTOTAL
主要功能:返回列表或数据库中的分类汇总。
使用格式:SUBTOTAL(function_num, ref1, ref2, ...)
参数说明:Function_num为1到11(包含隐藏值)或101到111(忽略隐藏值)之间的数字,用来指定使用什么函数在列表中进行分类汇总计算(如图6);ref1, ref2,……代表要进行分类汇总区域或引用,不超过29个。
应用举例:如图7所示,在B64和C64单元格中分别输入公式:=SUBTOTAL(3,C2:C63)和=SUBTOTAL103,C2:C63),并且将61行隐藏起来,确认后,前者显示为62(包括隐藏的行),后者显示为61,不包括隐藏的行。
特别提醒:如果采取自动筛选,无论function_num参数选用什么类型,SUBTOTAL函数忽略任何不包括在筛选结果中的行;SUBTOTAL函数适用于数据列或垂直区域,不适用于数据行或水平区域。
29、SUM函数
函数名称:SUM
主要功能:计算所有参数数值的和。
使用格式:SUM(Number1,Number2……)
参数说明:Number1、Number2……代表需要计算的值,可以是具体的数值、引用的单元格(区域)、逻辑值等。
应用举例:如图7所示,在D64单元格中输入公式:=SUM(D2:D63),确认后即可求出语文的总分。
特别提醒:如果参数为数组或引用,只有其中的数字将被计算。数组或引用中的空白单元格、逻辑值、文本或错误值将被忽略;如果将上述公式修改为:=SUM(LARGE(D2:D63,{1,2,3,4,5})),则可以求出前5名成绩的和。
30、SUMIF函数
函数名称:SUMIF
主要功能:计算符合指定条件的单元格区域内的数值和。
使用格式:SUMIF(Range,Criteria,Sum_Range)
参数说明:Range代表条件判断的单元格区域;Criteria为指定条件表达式;Sum_Range代表需要计算的数值所在的单元格区域。
应用举例:如图7所示,在D64单元格中输入公式:=SUMIF(C2:C63,"男",D2:D63),确认后即可求出“男”生的语文成绩和。
特别提醒:如果把上述公式修改为:=SUMIF(C2:C63,"女",D2:D63),即可求出“女”生的语文成绩和;其中“男”和“女”由于是文本型的,需要放在英文状态下的双引号("男"、"女")中。
31、TEXT函数
函数名称:TEXT
主要功能:根据指定的数值格式将相应的数字转换为文本形式。
使用格式:TEXT(value,format_text)
参数说明:value代表需要转换的数值或引用的单元格;format_text为指定文字形式的数字格式。
应用举例:如果B68单元格中保存有数值1280.45,我们在C68单元格中输入公式:=TEXT(B68, "$0.00"),确认后显示为“$1280.45”。
特别提醒:format_text参数可以根据“单元格格式”对话框“数字”标签中的类型进行确定。
32、TODAY函数
函数名称:TODAY
主要功能:给出系统日期。
使用格式:TODAY()
参数说明:该函数不需要参数。
应用举例:输入公式:=TODAY(),确认后即刻显示出系统日期和时间。如果系统日期和时间发生了改变,只要按一下F9功能键,即可让其随之改变。
特别提醒:显示出来的日期格式,可以通过单元格格式进行重新设置(参见附件)。
33、VALUE函数
函数名称:VALUE
主要功能:将一个代表数值的文本型字符串转换为数值型。
使用格式:VALUE(text)
参数说明:text代表需要转换文本型字符串数值。
应用举例:如果B74单元格中是通过LEFT等函数截取的文本型字符串,我们在C74单元格中输入公式:=VALUE(B74),确认后,即可将其转换为数值型。
特别提醒:如果文本型数值不经过上述转换,在用函数处理这些数值时,常常返回错误。
34、VLOOKUP函数
函数名称:VLOOKUP
主要功能:在数据表的首列查找指定的数值,并由此返回数据表当前行中指定列处的数值。
使用格式:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
参数说明:Lookup_value代表需要查找的数值;Table_array代表需要在其中查找数据的单元格区域;Col_index_num为在table_array区域中待返回的匹配值的列序号(当Col_index_num为2时,返回table_array第2列中的数值,为3时,返回第3列的值……);Range_lookup为一逻辑值,如果为TRUE或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于lookup_value的最大数值;如果为FALSE,则返回精确匹配值,如果找不到,则返回错误值#N/A。
应用举例:参见图7,我们在D65单元格中输入公式:=VLOOKUP(B65,B2:D63,3,FALSE),确认后,只要在B65单元格中输入一个学生的姓名(如丁48),D65单元格中即刻显示出该学生的语言成绩。
特别提醒:Lookup_value参见必须在Table_array区域的首列中;如果忽略Range_lookup参数,则Table_array的首列必须进行排序;在此函数的向导中,有关Range_lookup参数的用法是错误的。
35、WEEKDAY函数
函数名称:WEEKDAY
主要功能:给出指定日期的对应的星期数。
使用格式:WEEKDAY(serial_number,return_type)
参数说明:serial_number代表指定的日期或引用含有日期的单元格;return_type代表星期的表示方式[当Sunday(星期日)为1、Saturday(星期六)为7时,该参数为1;当Monday(星期一)为1、Sunday(星期日)为7时,该参数为2(这种情况符合中国人的习惯);当Monday(星期一)为0、Sunday(星期日)为6时,该参数为3]。
应用举例:输入公式:=WEEKDAY(TODAY(),2),确认后即给出系统日期的星期数。
特别提醒:如果是指定的日期,请放在英文状态下的双引号中,如=WEEKDAY("2003-12-18",2)。
活用COUNTIF函数轻松统计数据
对于统计指定条件的单元格数量等需求,Excel提供了一个很好的函数,可以瞬间完成大批量的繁琐劳动。
具体函数的使用方法有:
1、返加包含值12的单元格数量
=COUNTIF(range,12)
2、返回包含负值的单元格数量
=COUNTIF(range,”<0″)
3、返回不等于0的单元格数量
=COUNTIF(range,”<>0″)
4、返回大于5的单元格数量
=COUNTIF(range,”>5″)
5、返回等于单元格A1中内容的单元格数量
=COUNTIF(range,A1)
6、返回大于单元格A1中内容的单元格数量
=COUNTIF(range,“>”&A1)
7、返回包含文本内容的单元格数量
=COUNTIF(range,“*”)
8、返回包含三个字符内容的单元格数量
=COUNITF(range,“???”)
9、返回包含单词”GOOD”(不分大小写)内容的单元格数量
=COUNTIF(range,“GOOD”)
10、返回在文本中任何位置包含单词”GOOD”字符内容的单元格数量
=COUNTIF(range,“*GOOD*”)
11、返回包含以单词”AB”(不分大小写)开头内容的单元格数量
=COUNTIF(range,“AB*”)
12、返回包含当前日期的单元格数量
=COUNTIF(range,TODAY())
13、返回大于平均值的单元格数量
=COUNTIF(range,”>”&AVERAGE(DATA))
14、返回平均值上面超过三个标准误差的值的单元格数量
=COUNTIF(range,“>”&AVERAGE(DATA)+STDEV(DATA)*3)
15、返回包含值为或-3的单元格数量
=COUNTIF(range,3)+COUNIF(DATA,-3)
16、返回包含值;逻辑值为TRUE的单元格数量
=COUNTIF(range,TRUE)
js四舍五入(round()方法)并保留小数点后N位的函数
写法巨强的四舍五入的转换函数,如下:
function round(v,e){
var t=1;
for(;e>0;t*=10,e--);
for(;e<0;t/=10,e++);
return Math.round(v*t)/t;
}
在感叹JS强大的同时,也感叹一下自己的无知!
参数里的:
v表示要转换的值
e表示要保留的位数
函数里的两个for,这个是重点了,
第一个for针对小数点右边的情况,也就是保留小数点右边多少位;
第二个for针对小数点左边的情况,也就是保留小数点左边多少位。
for的作用,就是计算t的值,也就是v应该放大或者缩小多少倍的倍数(倍数=t)。
for这里利用到了for里的两个特性,条件判断和计数器累计(循环),
当e满足条件时for继续,并且e每次累加(e的每次累加,就是给for制造不满足循环的条件)的同时,也计算t的值。
最后利用了原生的round方法来计算被放大/缩小后的v的结果,然后把结果放大/缩小到正确的倍数
ThinkPHP单字母函数(快捷方法)使用总结
1.U() URL组装 支持不同URL模式 U($url='',$vars='',$suffix=true,$domain=false) @param string $url URL表达式,格式:'[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...' @param string|array $vars 传入的参数,支持数组和字符串 @param string $suffix 伪静态后缀,默认为true表示获取配置值 @param boolean $domain 是否显示域名 @return string 2.D() D函数用于实例化模型类 格式 [资源://][模块/]模型 D($name='',$layer='') @param string $name 资源地址 @param string $layer 模型层名称 @return Model 3.M() M函数用于实例化一个没有模型文件的Model M($name='',$tablePrefix='',$connection='') @param string $name Model名称 支持指定基础模型 例如MongoModel:User @param string $tablePrefix 表前缀 @param mixed $connection 数据库连接信息 @return Model 4.I() 获取输入参数 支持过滤和默认值 I($name,$default='',$filter=null) 使用方法: I('id',0); //获取id参数 自动判断get或者post I('post.name','','htmlspecialchars'); //获取$_POST['name'] I('get.'); //获取$_GET 5.B() 执行某个行为 B($name,$tag='',&$params=NULL) @param string $name 行为名称 @param string $tag 标签名称(行为类无需传入) @param Mixed $params 传入的参数 @return void 6.C() 读取及设置配置参数 C($name=null,$value=null,$default=null) @param string|array $name 配置变量 @param mixed $value 配置值 @param mixed $default 默认值 @return mixed 7.E() 抛出异常处理 E($msg, $code=0) @param string $msg 异常消息 @param integer $code 异常代码 默认为0 @return void 8.G() 记录和统计时间(微秒)和内存使用情况 G($start,$end='',$dec=4) 使用方法: G('begin'); // 记录开始标记位 // ... 区间运行代码 G('end'); // 记录结束标签位 echo G('begin','end',6); //统计区间运行时间 精确到小数后6位 echo G('begin','end','m'); // 统计区间内存使用情况 如果end标记位没有定义,则会自动以当前作为标记位 其中统计内存使用需要 MEMORY_LIMIT_ON 常量为true才有效 @param string $start 开始标签 @param string $end 结束标签 @param integer|string $dec 小数位或者m @return mixed 9.L()获取和设置语言定义(不区分大小写) L($name=null,$value=null) @param string|array $name 语言变量 @param mixed $value 语言值或者变量 @return mixed 10.T()获取模版文件 格式 资源://模块@主题/控制器/操作 T($template='',$layer='') @param string $name 模版资源地址 @param string $layer 视图层(目录)名称 @return string 11.N() 设置和获取统计数据 N($key,$step=0,$save=false) 使用方法: N('db',1); // 记录数据库操作次数 N('read',1); // 记录读取次数 echo N('db'); // 获取当前页面数据库的所有操作次数 echo N('read'); // 获取当前页面读取次数 @param string $key 标识位置 @param integer $step 步进值 @return mixed 12.A()A函数用于实例化控制器 格式:[资源://][模块/]控制器 A($name,$layer='',$level='') @param string $name 资源地址 @param string $layer 控制层名称 @param integer $level 控制器层次 @return Controller|false 13.R() 远程调用控制器的操作方法 URL 参数格式 [资源://][模块/]控制器/操作 R($url,$vars=array(),$layer='') @param string $url 调用地址 @param string|array $vars 调用参数 支持字符串和数组 @param string $layer 要调用的控制层名称 @return mixed 14.W()渲染输出Widget W($name,$data=array()) @param string $name Widget名称 @param array $data 传入的参数 @return void 15.S()缓存管理 S($name,$value='',$options=null) @param mixed $name 缓存名称,如果为数组表示进行缓存设置 @param mixed $value 缓存值 @param mixed $options 缓存参数 @return mixed 16.F() 快速文件数据读取和保存 针对简单类型数据 字符串、数组 F($name, $value='',$path=DATA_PATH) @param string $name 缓存名称 @param mixed $value 缓存值 @param string $path 缓存路径 @return mixed