php 5.2.x 不被注意的细节: 输出篇

 更新时间:2016年11月25日 16:06  点击:1780

 

 

1、在以前的版本里面可能会说 print 需要 () ,但是  php5.2.5中已经不需要了。
       echo 可以打印多个变量,print 不行



$a = "hello";
$b = "world";
echo $a,$b,"<br>";
echo $a.$b."<br>";
print $a.$b;

输出:

helloworld
helloworld
helloworld

但这样就会出现编译错误:



print $a,$b;


注意:$a $b 中间的是逗号

 

2、单引号跟双引号的区别:



$a = "hello";
$b = "world";
echo "$a $b";
输出:hello world



echo ''$a $b'';
输出:$a $b

还有一点要提的是像下面这样写是可以正常输出的



$arr = array("a" => 1);
echo $arr[''a''];


 



<

环境:PHP 5.2.5,Zend studio 5.5.1,Zend Debugger 5.2.10

最简PHP调试环境搭建教程:
1、解压出来的文件夹内对应不同php版本有不同的文件夹
我是php5.2.5所以把5_2_x_comp下的ZendDebugger.dll拷到我的php安装目录(E:php5.2.5)里。
并把dummy.php拷到你的网站根目录下面(不知道网站根目录的请看下面的常见问题)

2、打开php.ini,在后面加上:
[Zend]
zend_extension_ts="E:php5.2.5ZendDebugger.dll"
zend_debugger.allow_hosts=127.0.0.1/32,127.0.0.1/24
zend_debugger.expose_remotely=allowed_hosts

3、重启IIS(不知道如何重启的看常见问题),打开phpinfo()若出现下图则成功

 

安装过程常见问题:
1、首先确定好版本号!php的版本多了,对应的Zend产品的版本号也要对应,只有Zend Debugger 5.2.x能够调试php5.2.5。被php版本和Zend的版本搞晕的朋友可以看我另一篇文章:“史上最简! Zend产品版本解析”。
Zend Debugger 5.2.10:http://downloads.zend.com/pdt/server-debugger/ZendDebugger-5.2.10-cygwin_nt-i386.tar.gz

2、啥叫网站根目录?
IIS装了之后在C盘新建了C:Inetpubwwwroot,这个wwwroot就是网站根目录,dummy.php就放这边。
打开控制面板->管理工具->Internet信息服务,在网站->默认网站上右键,属性->主目录->本地路径处也会看到C:Inetpubwwwroot

3、127.0.0.1/32,127.0.0.1/24,这个/32,/24是啥意思?
代表子网掩码,/32就是255.255.255.255(换算成二进制是32位),/24就是255.255.255.0

4、如何重启IIS?
打开cmd,先执行 net stop w3svc 再执行 net start w3svc

开始调试:
1、打开Zend studio->工具(Tool)->首选项(Preference)->调试(Debugger)这么设

 

 

刚看了php的教程,由于php版本的问题发现数组这边有地方可以研究
针对 php5.2.5 做了几个实验发现:

 

1、



$arr = array("a" => 1,"b" => 2,"c" => 3);

但是如果这样定义数组会报编译错误:



$arr = array("a" = 1,"b" = 2,"c" = 3);

所以定义数组的时候只能用 =>

 

2、



$arr = array("a" => 1,"b" => 2,"c" => 3);
echo $arr[0];
echo $arr[1];

打出来的是一片空白,这样才打的出来:



echo $arr["a"];

 


3、增加元素或修改元素的时候只能用 =  了,不能用 =>



$arr = array("a" => 1,"b" => 2,"c" => 3);
$arr["c"=> 6;


像这样在以前的版本中也许可以使用,但是到了 5.2.5 就会出现编译错误
增加元素或修改元素要像以下这样写:



$arr = array("a" => 1,"b" => 2,"c" => 3);
$arr["d"= 4;
$arr["c"= 6;
删除元素要使用 unset  


unset ($arr["c"]);

 

4、做个实验,猜猜这样打出来是什么:



$arr = array("a" => 1,2,"b" => 3,4);
$arr[] = 5;
foreach($arr as $key => $value)
{
    
echo "key:$key value:$value<br>";
}

 

结果:

key:a value:1
key:0 value:2
key:b value:3
key:1 value:4
key:2 value:5

这样就很明了,只有在用户没有定义键的时候 php 才会自动使用从0开始的数字作为键

 

5、php 中的数组是有指针的,可以对数组进行向前向后操作



$arr = array("a" => 1,3,"b" => 2);
//创建完数组后默认指针指在第一个元素
echo current($arr)."<br>";
//前进一个位置
echo next($arr)."<br>";
//整理的默认原则是从小到大
sort($arr);
//整理完后数组指针又停在第一个元素
echo current($arr)."<br>";
echo next($arr)."<br>";
//后退一个位置
echo prev($arr)."<br>";


输出:

1
3
1
2
1

 



例子:

1、这个是 conn.php的内容:

 



<?php
    
$conn =  mysql_connect(''localhost'','''',''''); 
    
mysql_select_db(''php''); 
?>

 

2、如果这样调用:

 



 function fun($a)
     {
         
include("conn.php");
          
.......//数据库处理语句

      }

.....

fun(
"aaa");//第一次调用

.....

fun(
"bbb");//第二次调用


在第二次调用的时候会出错,但是把 include 换成 require 就不会出问题。

因为 require 文件只在读到该页面的时候调用一次,而 include 在每次调用含有 fun 的地方都调用,所以就出现了数据库连接还没关闭就再次连接的错误。

因此在循环中只要调用一次的用 require ,其他地方这两个都可以用。

 





<?php 
 
Class upload 
 { 
  
var $upload_name
  
var $upload_tmp_address
  
var $upload_server_name
  
var $upload_filetype ; 
  
var $file_type
  
var $file_server_address
  
var $image_w=900;  //要显示图片的宽 
  var $image_h=350;  //要显示图片的高 
  var $upload_file_size
  
var $upload_must_size= 50000//允许上传文件的大小,自己设置 
  function upload_file() 
  { 
   
$this->upload_name = $_FILES["file"]["name"];    //取得上传文件名 
   $this->upload_filetype = $_FILES["file"]["type"]; 
   
$this->upload_server_name = date("Y_m_dH_i_s").$this->upload_name; 
   
$this->upload_tmp_address = $_FILES["file"]["tmp_name"];    //取得临时地址 
   $this->file_type = array("image/gif","image/pjpeg");  //允许上传文件的类型 
   $this->upload_file_size = $_FILES["file"]["size"];  //上传文件的大小 
   if(in_array($this->upload_filetype,$this->file_type)) 
   { 
   
   
   
if($this->upload_file_size < $this->upload_must_size) 
    { 
        
echo("上传成功,谢谢支持"); 
     
$this->file_server_address = "./upload/tx/".$this->upload_server_name; 
        
move_uploaded_file($this->upload_tmp_address,$this->file_server_address);//从TEMP目录移出 
        echo("<img src=$this->file_server_address width=$this->image_w height=$this->image_h/>");  //显示图片 
     
     } 
     
else 
     { 
      
echo("文件容量太大"); 
     } 
   } 
   
else 
   { 
    
echo("不支持此文件类型,请重新选择"); 
   } 
  }  
 } 

?>

 

 



<?php

include(''./lib/wodream/image/image_upload.php''); 
 
$dd = new upload; 
 
$dd->upload_file(); 

?>

 

 



<center><form  id="form1" name="upload" enctype="multipart/form-data" method="post"  action="index.php?controler=userinfo&action=image">
上传文件: 
<br><input type="hidden" name="MAX_FILE_SIZE " /> 
<input name="file" type="file"   style="width:200;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff" size="17">
<input type="submit" name="Submit"  value="上传" style="width:30;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff" size="17"><br><br><br>
允许上传的文件类型为:jpg|jpeg|png|pjpeg|gif|bmp|x-png|swf 
<br><br>
<href="index.php">返回</a>
</form>

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • idea 访问html页面端口号显示的是63342而不是8080

    这篇文章主要介绍了idea 访问html页面端口号显示的是63342而不是8080,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-11
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • js屏蔽F12审查元素,禁止修改页面代码等实现代码

    有时候我们需要屏蔽客户端的F12,以防菜鸟也可以随意修改我们的代码,也处于源码的保护等操作,这里就为大家分享一下常见的代码...2020-10-03
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • IDEA 2021.2 激活教程及启动报错问题解决方法

    这篇文章主要介绍了IDEA 2021.2 启动报错及激活教程,文章开头给大家介绍了idea2021最新激活方法,关于idea2021启动报错的问题小编也给大家介绍的非常详细,需要的朋友可以参考下...2021-10-15
  • vscode搭建STM32开发环境的详细过程

    这篇文章主要介绍了vscode搭建STM32开发环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-02
  • 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
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • Win2008 R2安装.NET Framework 4的windows6.1-KB958488-V6001-x64出现灾难性故障解决方法

    这篇文章主要介绍了Win2008 R2安装.NET Framework 4的windows6.1-KB958488-V6001-x64出现灾难性故障解决方法,需要的朋友可以参考下...2016-01-27
  • 小米Note2修改按键功能教程 小米Note2如何修改按键功能

    本篇文章介绍了小米note2如何修改按键功能的方法,有需要的小伙伴进来了解下。 1)打开手机设置,在设置菜单嗲机【其他高级设置】,进入后点击【按键】选项。(如下图)...2016-12-31
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • Python PyPDF2模块安装使用解析

    这篇文章主要介绍了Python PyPDF2模块安装使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-04-22
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • Apple Watch Series 2 评测:依然是iPhone的配件,但方向变了

    Apple Watch 是什么?值得买吗?  两年前,Apple Watch 面世伊始,我要费尽一番口舌向身边的朋友解释这两个问题。时隔两年,当我戴上 Apple Watch Series 2,发现这诞生只有两年的新产品已经悄然发生了转变,因为这样的转变,这两个问题没当初那么费解了。...2016-09-28
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29