PHP 关于foreach 中修改array中元素的值

PHP中支持使用引用‘&‘,用法与C基本一样,个人理解就是函数中引用的变量指针直接指向了传入参数的源地址,所以使用引用还是存在一定的危险性。所以对于一重循环,建议不使用引用,直接修改原array即可

        $table_exchange=array();
        array_push($table_exchange, array(
        "cnid" => ‘123‘,
        "status" =>  0,
        "checked" => false,
        "leaf" => true
        ));
        foreach ($table_exchange as $b=> $c)
        {

            $table_exchange[$b][‘cnid‘]= ‘222‘;
        }
        echo json_encode($table_exchange);

输出:

[{"cnid":"222","status":0,"checked":false,"leaf":true}]

而在操作复杂的多重循环中,使用引用会方便许多,也更加便于理解和操作,例如:

         $nodeList=array();
        array_push($nodeList, array(
        "cnid" => ‘1‘,
        "status" =>  1,
        "checked" => false,
        "leaf" => true
        ));

        $table_exchange=array();
        array_push($table_exchange, array(
        "cnid" => ‘2‘,
        "status" =>  0,
        "checked" => false,
        "children" => $nodeList,
        "leaf" => false
        ));

        foreach ($table_exchange as $b=>& $c){

            foreach($c[‘children‘] as $b2=>& $d){
                $d[‘cnid‘]=‘000‘;
            }
        }

        echo json_encode($table_exchange);//转成json格式输出到网页显示结果

输出:[{"cnid":"2","status":0,"checked":false,"children":[{"cnid":"000","status":1,"checked":false,"leaf":true}],"leaf":true}]

时间: 2024-08-29 19:33:32

PHP 关于foreach 中修改array中元素的值的相关文章

解析JQuery中css()方法,获取元素CSS值之getComputedStyle方法(转载,写的很好)

一.碎碎念~前言 我们都用过jQuery的CSS()方法,其底层运作就应用了getComputedStyle以及getPropertyValue方法. 对于那些只想混口饭吃的人来讲,晓得CSS()如何使用就足够了.对于希望在JS道路上越走越远的来人说,简单了解一些JS库底层实现对自己的学习很有帮助.可能谈不上信手拈来的使用,至少对创造一些创意新颖的新技术拓宽了思路. jQuery为何受欢迎,其中原因之一就是方法名称比较短.好比打架一样,块头大的潜意识认为厉害,就不由得心生畏惧,退避三舍:小个子(

把数组中的n个元素的值分别扩大5倍,要求数组名作为参数。

通过把数组名作为参数传递,实际上是把数组的地址传递给形式参数.这样在被调用函数中就可以对整个数组进行操作了,将数组名作为参数传递,调用函数和被调用函数都是对占同一块内存单元的数组进行操作. #include<stdio.h> #define N 10 void MulArray1(int *x,int n);//数组名作为参数的函数原型 void MulArray2(int *aPtr,int n);//指针作为参数的函数原型 void main() { int a[N]={1,2,3,4,5

Android 在frameworks中修改Setting中的默认值 (二)

修改设置->关于手机->法律信息 下有一些Item,如开放源代码许可.Google法律信息等,这里分析的是Android 4.4的代码 如下图所示,想添加"Google法律信息"选项 查看Settings的源码在/Settings/src/com/android/settings/DeviceInfoSettings.java文件初始化时有这样一段代码 @Override public void onCreate(Bundle icicle) { super.onCreat

Android 在frameworks中修改Setting中的默认值

在frameworks中跟Setting默认值相关的几个文件 /frameworks/base/packages/SettingsProvider/res/values/defaults.xml /frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 在defaults.xml文件中定义了相关的值,DatabaseHelper.java会把相应的值读取出来保

resfframework中修改序列化类的返回值

在序列化类中重写to_representation(self,instance)方法,这个是返回json对象的方法,返回的是一个待序列化的对象,可以直接对这个类进行定制,有关关联查询也可以在这里进行定制,例如 def to_representation(self, instance): res = super().to_representation(instance=instance) res["gitGroup"] = {"name": instance.gitG

android-theme中修改actionmode中more下拉框的背景颜色

今天在做图库修改是,需要修改图库的actionbar某个按钮弹出来的下拉框的背景颜色,在网上找了个方法尝试下,没有打到自己的要求,不过阴差阳错的却修改了more下拉框的背景,再次记录下,也许以后能用的到. 代码 <style name="Theme.FunuiGallery" parent="android:Theme.Funui"> <item name="listPreferredItemHeightSmall">48

委托 在其他类中修改form中的控件属性

通常情况下,我们需要在其他业务类中将提示信息时时显示到主界面上,可以通过以下方式 Form1.cs using System; using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading;using System.Windows.Forms;

h5 中修改input中 placeholder的颜色

input::-webkit-input-placeholder{ color:blue; } input::-moz-placeholder{ /* Mozilla Firefox 19+ */ color:blue; } input:-moz-placeholder{ /* Mozilla Firefox 4 to 18 */ color:blue; } input:-ms-input-placeholder{ /* Internet Explorer 10-11 */ color:blue

详解Javascript中的Array对象

基础介绍 创建数组 和Object对象一样,创建Array也有2种方式:构造函数.字面量法. 构造函数创建 使用构造函数的方式可以通过new关键字来声明,如下所示: 12 var arr = new Array();console.log(arr);//[] 当然也可以不通过new关键字来声明: 12 var arr = Array();console.log(arr); //[] 如果知道数组元素的个数,也可以直接传入数字表示元素个数: 12 var arr2 = new Array(5);c