php var_export 与 var_dump的分析区别
php教程 var_export 与 var_dump的分析区别
问题发现
在跟踪yratings_get_targets的时候,
error_log(var_export(yblog_mspconfiginit("ratings"),true));
老是打印出yblog_mspconfiginit(“ratings”)的返回是NULL
导致我以为是无法建立和DB的连接,走错路了一天。
最后才发现,这是var_export和var_dump的区别之一
这就是:
问题原因
var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。 而这个变量就会取得和被var_export一样的类型的值
但是, 当变量类型为resource的时候, 是无法简单copy复制的,所以, 当var_export的变量是resource类型时, var_export会返回NULL
实例
$res = yblog_mspconfiginit("ratings");
var_dump($res);
var_export($res);
结果:
resource(1) of type (yahoo_yblog)
NULL
再比如:
$res = fopen('status.html', 'r');
var_dump($res);
var_export($res);
结果:
resource(2) of type (stream)
NULL
PHP的一些基本语法(数组,字符串)
上篇写了PHP的一些基本语法,以及表单的提交和处理等,这一篇中接着上一篇写了数组的用法以及数组和字符串之间的相互处理,希望对大家有所帮助:
多维数组:
$arr1=array('a'=>'MD','b'=>'AD'...);
$arr2=array('c'=>'SD','d'=>'AE'...);
$arr=array('US'=>$arr1,'AB'=>$arr2);
使用多维数组:
echo "{$arr['US']['a']}";
Eg:
---arr1.php教程
<body>
<form action="arr.php" method="post">
<fieldset><legend>Enter your information in the form below:</legend>
<p><b>NAME:</b><input type="text" name="name" maxlength="40" size="20"></p>
<p><b>Interests:</b>
<input type="checkbox" name="interests[]" value="Music"/>Music
<input type="checkbox" name="interests[]" value="Movies"/>Movies
<input type="checkbox" name="interests[]" value="Books"/>Books
<input type="checkbox" name="interests[]" value="Skiing"/>Skiing
<input type="checkbox" name="interests[]" value="Napping"/>Napping
</p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="submit"/></div>
</form>
</body>
---arr.php
<body>
<?php
if(!empty($_POST['name']))
{
$name=strips教程lashes($_POST['name']);
}
else
{
$nam=NULL;
echo '<p><font color="red">You forgot to enter your name</font></p>';
}
if(isset($_POST['interests']))
{
$interests=true;
}
else
{
$interests=NULL;
echo '<p><font color="red">You forgot to enter your interests!</font></p>';
}
if($name && $interests)
{
echo "Thank you,<b>$name</b>,You entered your interests as:<ul>";
foreach($_POST['interests'] as $value)
{
echo "<li>$value</li>n";
}
echo '</ul>';
}
else
{
echo '<p><font color="red">Please go back and fill out the form again.</font></p>';
}
?>
</body>
数组和字符串
数组和字符串的转换:
$array=explode(separator,$string);
$string=implode(glue,$array);
分隔符(separator)、胶合(glue),当把一个数组转变成一个字符串时,将会设置胶合——将被插入到生成字符串中的数组值之间的字符和代码。当把字符串转变成数组时,要制定分隔符,它是描述生成数组中的不同元素之间的链接的代码。
eg:
$string1='Mon-Tue-Wed-Thur-Fri';
$days=explode('-',$string1);
$days有5个元素:0=>'Mon'…
$string2=implode(',',$days);
$string2现在是一个逗号分隔的一个星期中各天的列表:Mon,Tue…;
上例中arr.php中部分可以改为:
if(isset($_POST['interests']))
{
$interests=implode(',',$_POST['interests']);
}
然后可以将$interests作为字符串输出。
总结技巧:
join()函数时implode()函数的同义词
explode()函数第三个可选的参数是一个数字,用于限制将创建多少个数组元素。
数组排序
可以使用sort()按值对数组进行排序,但是它会丢弃原来的键。在排序过程之后,将会重置数组的键,因此,如果键--值关系很重要,最好不要用这个函数。
用asort()按值进行排序,会维持键。
可以使用ksort()按键对数组排序。
如果把上面三个函数分别改为rsort()、arsort()和krsort(),则能够以倒叙对数组排序。
eg:
//--------arrsort.php
<body>
<?php
$movies=array(10=>'Ca',9=>'To',2=>'THe',8=>'Sideways',7=>'Donnie');
echo '<p>In their original order:<br/><pre>Rating Title:<br/>';
foreach($movies as $key=>$value)
{
echo "$keyt$valuen";
}
echo '</pre></p>';
echo '<p>Sorted by title:<br/><pre>Rating Title:<br/>';
asort($movies); //按值对数组进行排序。
foreach($movies as $key=>$value)
{
echo "$keyt$valuen";
}
echo '</pre></p>';
echo '<p>Sorted by rating:<br/><pre>Rating Title:<br/>';
krsort($movies); //按键进行排序,并倒置数组位置。
foreach($movies as $key=>$value)
{
echo "$keyt$valuen";
}
echo '</pre></p>';
?>
</body>
DEDE软件下载模块中添加下载方式为迅雷下载联盟代码
修改 /plus/download.php教程 文件
查找
<?php
在它上面加入 Dede教程-598080707.NET
<script src="http://ps教程tatic.xunlei.com/js/webThunderDetect.js"></script>
在它下面加入
require("encode.inc");
查找
else if($open==1){
$link = base64_decode($link);
echo "<script language='网页特效'>location="$link";</script>";
exit();
替换为
else if($open==1){
$link = base64_decode($link);
$Url = ("http://asqq8.net/url".$link);
$thunderUrl = ThunderEncode($Url);
echo "<script>OnDownloadClick('".$thunderUrl."','',location.href,'你的联盟id',2,'')</script>";
exit();
}
把迅雷联盟的 encode.inc 文件 放到 plus 目录
php教程基础语法入门教程
输出语句:
echo()、print().
eg:
echo 'hello','world';
注释:
#、//、/* */
变量:
必须以$开头,区分大小写,第一个字符必须是字母或下划线。
链接字符串:
两个字符串之间用点(.)连接
常量:
全部使用大写字母来命名常量,常量不会像变量那样使用美元符号。
define('name','value');
PHP运行时利用了几个预定义的常量,包括PHP_VERSION和PHP_OS(服务器的操作系统)
创建一个新的日期常量:
define('TODAY','February 3,2005');
echo 'Today is'.TODAY;
单引号和双引号的区别:
在单引号的字符按照字面意义进行处理,而在双引号中的值则将被解释。
处理HTML表单
<form action="" method="">
action后指示将其页面提交到指定的页面。
接受表单数据的PHP页面将把用户输入到这个表单的中的内容赋予一个称谓&_REQUEST['name']的特殊变量。其中要使用全拼大写,因为PHP对变量名区分大小写。name用于表示要提交的表单中指定的变量名。
1.php
<body>
<form action="2.php" method="get">
<fieldset><legend>Enter your information in the form below:</legend>
<p><b>name:</b><input type="text" name="name" size="20" maxlength="40"/></p>
<p><b>E-mail:</b><input type="text" name="email" size="40" maxlength="60"/></p>
<p><b>Gender:</b><input type="radio" name="gender" value="M"/>Male<input type="radio" name="gender" value="F"/>Female</p>
<p><b>Age:</b>
<select name="age">
<option value="0-29">Under 30</option>
<option value="30-60">Between 30 and 60</option>
<option value="60+"Over 60></option>
</select></p>
<p><b>Comments:</b><textarea name="comments" rows="3" cols="40"></textarea></p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="Submit My Information"/></div>
</form>
</body>
运行如下:
2.php
当输入一些数据点submit时,会调用2.php:
<body>
<?php
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$comments=$_REQUEST['comments'];
echo "<p>Thank you.<b>$name</b>.for the following comments:<br/><tt>$comments</tt></p>n";
?>
</body>
运行如下:
管理Magic Quotes(魔术引用):
对变量的值中的单引号和双引号进行转义。
如在上例中的comments中输入‘,则会显示'。
PHP中,有两类主要的Magic Quotes:magic_quotes_gpc,它适用于表单、URL和cookie数据(gpc代表get、post、cookie);magic_quotes_rentime,它适用于外部文件和数据库教程检索的数据。
如果在服务器上启用了Magic Quotes,则可以使用strips教程lashes()函数撤销它的作用。
$var=stripslashes($var);
这个函数将删除在$var中发现的任何反斜杠。在表单示例中,这具有把转义的提交字符串转变回其原来的未转义值的作用。
条件语句
If(isset($_REQUEST['gender']))
{
$gender=$_REQUEST['gender']
}
Else
{
$gender=NULL;
}
If($gender=='M')
{
...
}
验证表单数据
Isset()用于测试一个变量是否具有值(包括0、FALSE,或则一个空字符串,但不能是NULL)
但是使用此方法,若空字符串测试为TRUE,所以他不是验证HTML表单的文本输
入和文本框的有效方式。
empty()方法:
检查一个变量是否具有空值(empty):空字符串、0、NULL或FALSE。
eg:
if(!Empty(&_REQUEST['name']))
{
$name=stripslashes($_REQUEST['NAME'])
}
if($name)
{
…
}
要检测提交的值是否是数字,可使用is_numeric()函数。
可以使用strlen()函数来查看是否输入了0个以上的字符:
if(strlen($var)>0)
...
数组
数组可以构成一系列键-值对(key-value),其中每一对都是那个数组的一个项目或元素(element)。
PHP支持两种数组:索引数组(indexed array) 和联合数组(associative array),前者使用数字作为键,后者使用字符串作为键。索引数组的第一个索引开始于0,除非显示指定键。
数组遵守与任何其他变量相同的命名规则。
echo $ar[2];
echo $ar['MD']; --联合索引的键必须用单引号。
当数组使用字符串作为它的键时,输出格式为:
echo "{$array['IL']}";
当使用数字作为它的键时,输出格式为:
echo "$array[4]";
超全局数组:
$_GET、$_POST、$_SESSION、$_REQUEST、$_COOKIE等:
php使用$_GET来存储通过get方法发送到php脚本的所有变量和值。
$_POST存储使用post方法从HTML表单发送到php脚本的所有数据。
以及$_COOKIE,他们都是$_REQUEST的子集。
eg:
在前面的例子中,我们使用post获取所有元素,则可以直接用$_POST['name'],如:
$name=$_POST['name'];
创建数组:
1.一次向数组中添加一个元素:
$array[]="d";
$array['son']="BUJ";
2. 使用array()函数:
$arr=array('IA' => 'LH','MD' => 'MH');
不论是否显示地设置了键,都可以使用这个函数:
$arr=array('dd','asd');
如果设置了第一个具有数字键的值,则此后添加的值将具有递增的键:
$day=array(1=>'S','dd','ss') //$day[2]=dd,$day[3]=ss;
创建连续数字的数组,可以使用range()函数:
$ten=range(1,10);
访问数组:
foreach($array as $value)
{...}
foreach()循环将会迭代$array中的每个元素,并把每个元素的值赋予给$value变量。要访问键和值,可以使用:
foreach($array as $key=>value)
{
echo "The array value at $key is $value";
}
eg:
<form action="2.php" method="post">
<?php
$months=array(1=>'January','February','March');
$days=range(1,12);
$years=range(2000,2011);
echo '<select name="month">';
foreach($months as $key=>$value)
{
echo "<option value="$value">$value</option>n";
}
echo "</select>";
echo '<select name="days">';
foreach($days as $key=>$value)
{
echo "<option value="$value">$value</option>n";
}
echo "</select>";
echo '<select name="years">';
foreach($years as $key=>$value)
{
echo "<option value="$value">$value</option>n";
}
echo '</select>';
?>
要确定数组中的元素个数,可以使用count()或sizeof()函数:
$var =count($array);
从PHP4.1起,range()函数也可以创建连续字符的数组:
$var=range('a','z');
在foreach循环中不必使用名称$key和$value,但是,有些简写为$k和$v.
如果看到Invalid argument supplied for foreach()(为foreach()提供了无效的参数)出错消息,这意味
着你正尝试在不是数组的变量上使用foreach循环。
php教程 preg_match 支持换行正则表达式
如果是根据内容自己,然后自己写的模式,为什么要写这么怪的模式呢。即使原来内容有换行,你模式也可以不使用换行啊。如果模式是存在数据库教程的
/<span class="realm tip" id="profile-info-realm" data-battlegroup="(.*)">
(.*)</span>/i
参考代码二
preg_match('/<span class="realm tip" id="profile-info-realm" data-battlegroup="(.*)">
(.*)</span>/i'
,$replacestr,$match);
第一个参数 是模式
"/正则/s"
$pat="/<span class="realm tip" id="profile-info-realm" data-battlegroup="(.*)">
(.*)</span>/is"
相关文章
mysql_connect与mysql_pconnect的区别详解
在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解...2016-11-25解决vue的router组件component在import时不能使用变量问题
这篇文章主要介绍了解决vue的router组件component在import时不能使用变量问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27- 因此,正确的原子操作是真正被执行过的。是物理执行。在当前事务中确实能看到插入的记录。最后只不过删除了。但是AUTO_INCREMENT不会应删除而改变值。1、为什么auto_increament没有回滚?因为innodb的auto_increament的...2014-05-31
- 这篇文章主要介绍了C#中out与ref的区别实例解析,对C#初学者有不错的学习借鉴价值,需要的朋友可以参考下...2020-06-25
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04解决vue动态路由异步加载import组件,加载不到module的问题
这篇文章主要介绍了解决vue动态路由异步加载import组件,加载不到module的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27谈谈Jquery中的children find 的区别有哪些
精华:find方法能找子孙,children方法只能找儿子一、Jquery中children 语法.children(selector) 说明expr是表达式,可选参数,所有选择器中的表达式都可以用在这,比如按标签名"div",按类名".class",按序号":first"等等,如果表...2015-10-21- 在PS中像素大小、文档大小有什么区别呢,这个估计很多初学者不清楚,下面我来给大家讲解一下,希望对你有帮助。 1、像素大小 通常用于显示屏显示的图片大小的调整。菜...2016-09-14
- 索引并不是时时都会生效的,比如以下几种情况,将导致索引失效: 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) 注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引 ...2014-06-07
- 这篇文章主要介绍了python import 上级目录的导入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 本文主要讲述了利用Python网络爬虫对指定京东商城中指定商品下的用户评论进行爬取,对数据预处理操作后进行文本情感分析,感兴趣的朋友可以了解下...2021-05-28
- Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。这篇文章主要介绍了underscore源码分析相关知识,感兴趣的朋友一起学习吧...2016-01-02
- 这篇文章主要介绍了C#中sleep和wait的区别分析,有助于深入理解C#中线程的原理与使用技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了uniapp和vue的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-10-19
- //函数list while(list($id,$username,$password,$add_date,$mdn,$mobile,$channel,$last_date,$area,$nickname) = mysql_fetch_array($rs)){ ...2016-11-25
- Google是这样介绍PageRank的: Google 出类拔萃的地方在于专注开发“完美的搜索引擎”,联合创始人拉里·佩奇将这种搜索引擎定义为可“确解用户...2017-07-06
- 这篇文章主要介绍了input框中的name和id的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-11-22
Fatal error: Cannot redeclare class 原因分析与解决办法
我使用的都是php __autoload状态自动加载类的,今天好好的程序不知道怎么在运行时提示Fatal error: Cannot redeclare class 了,看是重复定义了类,下面我来分析一下解决办...2016-11-25- ireport默认都是自动分页数据超出页面长度就会自动分到下一页,但有时候业务需要一页只显示固定几行这时候就需要自定义条数了。下面看具体操作吧...2021-10-26
- 在php中switch是选择,if else也有同理,但是它们肯定是有区别的,那么我们来看看它们两者的区别在哪里呢,下面先看switch case语句吧。 switch($id){ case 1: ...2016-11-25