当前位置:  编程技术>php

php数组传值调用与传址调用

    来源: 互联网  发布时间:2014-08-30

    本文导语:  在java中数组的调用默认是是传址调用:主体方法中传递一个数组给某个方法,在该方法内修改了数组的某个值;回到主方法中会发现数组已经发生了改变;   测试代码:   代码示例: public class ArrayTest {      public static vo...

在java中数组的调用默认是是传址调用:主体方法中传递一个数组给某个方法,在该方法内修改了数组的某个值;回到主方法中会发现数组已经发生了改变;
 
测试代码:
 

代码示例:

public class ArrayTest { 
    public static void main(String[] args){ 
        Map[] maparray=new Map[3]; 
        for (int i = 0; i < maparray.length; i++) { 
            Map map=new HashMap(); 
            map.put("a", i+"_ajkcz"); 
            map.put("c", "werq_"+i); 
            maparray[i]=map; 
        } 
 
        System.out.println("++++++++++++++++++++++++"); 
        for (int i = 0; i < maparray.length; i++) { 
            Map map=maparray[i]; 
            Iterator it=map.keySet().iterator(); 
            while(it.hasNext()){ 
                String key=(String) it.next();  
                System.out.println(key+"t"+map.get(key) ); 
            } 
        } 
         
        System.out.println("++++++++++++++++++++++++"); 
        new ArrayCharge().printAndChangeArray(maparray); 
         
 
        System.out.println("++++++++++++++++++++++++"); 
        for (int i = 0; i < maparray.length; i++) { 
            Map map=maparray[i]; 
            Iterator it=map.keySet().iterator(); 
            while(it.hasNext()){ 
                String key=(String) it.next();  
                System.out.println(key+"t"+map.get(key) ); 
            } 
        }        
    }     

class ArrayCharge {
    public void printAndChangeArray(Map[] maparray){ 
        for (int i = 0; i < maparray.length; i++) { 
            Map map=maparray[i]; 
            map.put("a",i+"________"); 
        } 
         
        for (int i = 0; i < maparray.length; i++) { 
            Map map=maparray[i]; 
            Iterator it=map.keySet().iterator(); 
            while(it.hasNext()){ 
                String key=(String) it.next();  
                System.out.println(key+"t"+map.get(key) ); 
            } 
        } 
    } 

 

控制台输出结果: 
 

++++++++++++++++++++++++ 
c   werq_0 
a   0_ajkcz 
c   werq_1 
a   1_ajkcz 
c   werq_2 
a   2_ajkcz 
++++++++++++++++++++++++ 
c   werq_0 
a   0________ 
c   werq_1 
a   1________ 
c   werq_2 
a   2________ 
++++++++++++++++++++++++ 
c   werq_0 
a   0________ 
c   werq_1 
a   1________ 
c   werq_2 
a   2________ 
 

而在php中,数组的调用默认是传值调用,在字方法中修改了数组,在父方法中无法察觉
 
测试代码:
 

代码示例:
 
 

控制台输出: 
 

Array ( 
 [0] => Array ( 
            [keystr] => key0 
            [valuestr] => value0 
 ) 
 [1] => Array ( 
 [keystr] => key1 
 [valuestr] => value1 
 ) 
 [2] => Array (  
[keystr] => key2 
 [valuestr] => value2  

 ) 
 +++++++++++++++++++++++++ 
Array ( 
 [0] => Array (  
[keystr] => key0 
 [valuestr] => value0  
)  
[1] => Array ( 
 [keystr] => key1  
[valuestr] => value1 
 )  
[2] => Array (  
[keystr] => key2  
[valuestr] => value2 
 )  
) +++++++++++++++++++++++++ 
 

如果希望在php中也能类似java中传数组参数给字方法,字方法处理完成后父方法中数组也跟随改变则需要在传递参数时不传递值而是传递值的指针,例如p的值是100,即$p=100;在传递p给字方法时需要传递的参数则为“&$p”
 
测试代码:
 

代码示例:
 
 

控制台输出: 
 

Array ( 
 [0] => Array ( 
 [keystr] => key0  
[valuestr] => value0  

 [1] => Array ( 
 [keystr] => key1  
[valuestr] => value1  
)  
[2] => Array (  
[keystr] => key2  
[valuestr] => value2  
)  

 +++++++++++++++++++++++++ 
Array (  
[0] => Array (  
[keystr] => key0  
[valuestr] => _________0  

 [1] => Array (  
[keystr] => key1  
[valuestr] => _________1  

 [2] => Array (  
[keystr] => key2  
[valuestr] => _________2  
)  
)+++++++++++++++++++++++++

    
 
 

您可能感兴趣的文章:

  • 救命.PHP没有办法调用MYSQL!!!!
  • php 使用system() 调用c程序的问题
  • php调用c++的方法
  • PHP父类调用子类方法的例子
  • php中调用其他系统http接口的方法说明
  • PHP异步调用socket小例子
  • PHP父类调用子类方法的代码例子
  • PHP Thrift Rpc 远程调用框架 workerman-thrift
  • php调用kill命令平滑重启nginx
  • php调用存储过程返回结果集的例子
  • PHP调用VC编写的COM组件实例
  • php中创建和调用webservice接口示例
  • php调用google接口生成二维码示例
  • php调用google接口生成二维码实例
  • php调用nginx的mod_zip模块打包ZIP文件
  • 博客 iis7站长之家
  • php如何调用c#开发的dll类库?
  • PHP调用C#开发的dll类库方法
  • PHP异步调用socket与php异步执行实例
  • php 异步调用方法实现示例
  • 判断php数组维度(php数组长度)的方法
  • php定义数组和使用示例(php数组的定义方法)
  • php数组函数之array_combine() 数组合并函数
  • php遍历数组四种方法 php数组遍历实例
  • php数组函数之array_count_values() 统计数组中所有值出现的次数
  • php数组随机排序示例
  • php生成数组与php全组合算法
  • php分割数组示例
  • php判断一个数组是否为另一个数组子集的方法
  • php数组函数之array_unique() 去除数组中重复的元素值
  • php生成数组的使用示例 php全组合算法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • php输入流php://input使用示例(php发送图片流到服务器)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP转换器 HipHop for PHP
  • PHP去除html标签,php标记及css样式代码参考
  • PHP 框架 Pop php
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP的JavaScript框架 PHP.JS
  • php通过socket_bind()设置IP地址代码示例
  • php服务器探针显示php服务器信息
  • php安装完成后如何添加mysql扩展
  • PHP缓存加速器 Alternative PHP Cache (APC)
  • PHP的substr() 函数用法
  • PHP源文件加密工具 PHP Screw
  • PHP介绍及学习网站推荐
  • PHP自动化测试 PHP-QAT
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • PHP 的 HTTP 客户端库 PHP Buzz
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • PHP 调试工具 PHP_Dyn


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3