下面程序运行结果为()
代码如下 | 复制代码 |
?$numb=array( A.3 |
答案:B
count函数中如果mode被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数(也就是你结果的12)。如果不设置mode默认为0 。不检测多维数组(数组中的数组)(结果3)。
首先遍历的是外面的数组array得出有两个元素(”color1″,”color2″,”color3″) 为3
再遍历(”color1″,”color2″,”color3″)数组得出的是9个元素 为9
结果就是3+9=12
参考
代码如下 | 复制代码 |
<?php echo(count($fruits[0])); |
你说的可能是用其他方式定义的数组,比如直接用:
代码如下 | 复制代码 |
<?php echo(count($fruits[0])); |
这样那就输出3,因为php中的数组不要求索引必须连续,参考手册上有如下一段:
数组
PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方面做了优化,因此你可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。因为可以用另一个 PHP 数组作为值,也可以很容易地模拟树。
实例
获得二维或多维数组的第一维的长度,这是个常用的程序判断,比如你读取的数组是一个二维数组:
代码如下 | 复制代码 |
<?php $arr=array( 0=>array('title' => '新闻1', 'viewnum' => 123, 'content' => 'ZAQXSWedcrfv'), 1=>array('title' => '新闻2', 'viewnum' => 99, 'content' => 'QWERTYUIOPZXCVBNM') ); ?> |
如果你想统计数组$arr的长度,也就是说该二维数组只有两条新闻,你想要的数字也是2,但是如果使用count($arr)不同版本的php,统计的结果是不一样的;
后来在php手册中发现,count函数还有第二个参数,解释如下:
count函数有两个参数:
0(或COUNT_NORMAL)为默认,不检测多维数组(数组中的数组);
1(或COUNT_RECURSIVE)为检测多维数组,
所以如果要判断读取的数组$arr是不是有新闻信息,就要这样写了:
代码如下 | 复制代码 |
<?php if(is_array($arr) && count($arr,COUNT_NORMAL)>0 ) { ..... } else { ..... } ?> |
你可以使用这样的代码来测试该函数:
代码如下 | 复制代码 |
<?php $arr=array( 0=>array('title' => '新闻1', 'viewnum' => 123, 'content' => 'ZAQXSWedcrfv'), 1=>array('title' => '新闻2', 'viewnum' => 99, 'content' => 'QWERTYUIOPZXCVBNM') ); echo '不统计多维数组:'.count($arr,0);//count($arr,COUNT_NORMAL) echo "<br/>"; echo '统计多维数组:'.count($arr,1);//count($arr,COUNT_RECURSIVE) ?> |
好了,到此位置,已经解决php中获取二维或多维数组的第一维长度的问题
浏览器打开页面实现文件下载的程序代码(php/jsp/java) 有需要学习的同学可参考一下。tomcat中配置如下:
代码如下 | 复制代码 |
<mime-mapping> |
对于如上配置,当访问扩展名txt或jpg的资源时就出现下载提示框,如果只需要对某些提到的资源让其出现下载提示框,上述配置就不行了,解决的方法是在资源的response头中设置content-type即可,例如:
php 中
代码如下 | 复制代码 |
header("Content-type:application/octet-stream"); |
下载文件程序
代码如下 | 复制代码 |
<? header("content-type:text/html; charset=utf-8"); $file_name=$_GET['name']; //服务器的真实文件名 $file_realName=urldecode($_GET['real']); //数据库的文件名urlencode编码过的 $file_dir="upload/"; $file = fopen($file_dir . $file_name,"r"); // 打开文件 // 输入文件标签 header( "Pragma: public" ); header( "Expires: 0" ); Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes"); Header("Accept-Length: ".filesize($file_dir . $file_name)); Header("Content-Disposition: attachment; filename=" . iconv("UTF-8","GB2312//TRANSLIT",$file_realName)); // 输出文件内容 echo fread($file,filesize($file_dir . $file_name)); fclose($file); exit; ?> |
java 中
代码如下 | 复制代码 |
response.setContentType("application/octet-stream"); resp.setHeader("Content-Disposition", "attachment;filename="downloaded.txt"); |
如果需要为下载设置一个保存的名字,可以用Content-Disposition属性来指定。
实例
代码如下 | 复制代码 |
<%@page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gbk"%><% |
.首先到http://phpmailer.worxware.com/ 下载最新版本的程序包
2.下载完成后,找到class.phpmailer.php 、class.smtp.php两个类放到自己的目录下!
3.然后新建一个php文件这里命名为:phpmail_jiucool.php
4.phpmail_jiucool.php内容如下:
实例
代码如下 | 复制代码 |
function postmail_jiucool_com($to,$subject = "",$body = ""){ |
注意:
phpmailer如果添加附件的时候,在附件名称里一定要写明附件的后缀,如果不写明附件后缀,默认的附件后缀会是.txt。
比如
代码如下 | 复制代码 |
$mail -> AddAttachment('include/id.csv','att');// |
附件的路径和附件名称
如果向上面一样添加附件发送,则最终接到的附件可能是att.txt。
AddAttachment可以设置附件编码方式和附件类型,比如上面的附件添加也可以设置为
代码如下 | 复制代码 |
$mail -> AddAttachment('include/id.csv','att.csv',"binary","text/comma-separated-values");// |
附件的路径和附件名称、
附件的编码方式大概有这么几种:支持8bit, base64, binary, and quoted-printable 编码
而CSV可接受的MIME Type
· application/octet-stream
· text/comma-separated-values(推荐)
· text/csv
所以,csv格式文件的附件类型可以是上面三种中的任意一种
实例
代码如下 | 复制代码 |
require_once('include/PHPMailer/class.phpmailer.php'); //导入PHPMAILER类 |
只要加上这希就可以实例邮箱发送带附件了
$mail -> AddAttachment('include/id.csv','att.csv');//附件的路径和附件名称
本文章介绍在php中关闭notice错误的一些做法,但是不得不说的是在关掉错误提示时,那么程序代码中大量的notice级别错误是否会造成PHP性能下降PHP Notice: Undefined variable
PHP Notice: Undefined index
看看吧,你有没定义的变量直接使用了。不过编PHP的时候本来就不像C++那么严格,编程的时候经常还会利用这个特点。PHP的默认设置是显示这些提示,这会造成页面无法正常显示出来。
代码如下 | 复制代码 |
//error_reporting(E_ALL); |
第一个是代表显示所有错误,
第二个代表显示所有错误不显示警告,
我们只要把第二行前面加//,把第一行前面的//去掉即可。
附:各个错误报告详解
使用方法:
代码如下 | 复制代码 |
error_reporting(0);//禁用错误报告 |
实例
代码如下 | 复制代码 |
if (!$a) { |
在php.ini中禁止修改方法
1、由空间商在服务器中的php.ini的配置文件修改:
在php.ini文件中改动error_reporting
改为:
代码如下 | 复制代码 |
error_reporting = E_ALL & ~E_NOTICE |
如果你是固得美国空间用户,不能操作php.ini文件,你可以用下面的方法来实现
2.在你想禁止notice错误提示的页面中加入下面的代码
代码如下 | 复制代码 |
/* Report all errors except E_NOTICE */ |
注意一点的是
关闭掉PHP错误输出并不会关闭php内核对错误的处理,代码中如果有大量的Notice级别的错误,还是会降低php程序的性能。所以我们在开发的时候还是要将错误级别开至E_ALL,谨慎的处理掉每处不合理的代码
我想对 html 的图片进行提取.
代码如下 | 复制代码 |
<img ico" width=100% src="/noavatar_small.gif" /> <img" width=100% src="/noavatar_small.gif" /> |
如上地址. 我想全部提取出来 但是包含'ico' 的地址 忽略. 求正则 , 就是有些图片 提取.有些不提取.
例子:
代码如下 | 复制代码 |
<s*imgs+[^>]*?srcs*=s*('|")(.*?)\1[^>]*?/?s*> |
经改进后..
正确解答如下
代码如下 | 复制代码 |
/<img(?:(?!(ico)).)+/>/ |
实例
代码如下 | 复制代码 |
//要替换的内容 //提取图片路径的src的正则表达式 $img = ""; $patterns= array(); foreach($img as $imgItem){ $final_imgUrl = $img_url.$imgItem; $img_new = "/".preg_replace("///i","/",$imgItem)."/"; } //让数组按照key来排序 //替换内容 |