在熟悉项目代码的时候 看到这样的foreach 循环:

foreach($data as &$val){

....

}

第一次看到循环里面使用了地址符“&”,我印象中的这个符号 是直接取到了这个变量的地址。

然后里面的循环操作,相对来说是高大上了点,比如说下面的例子:

我现在有一个需求 给一个数组添加一个元素,经常会有这种需求
     商品统计:商品价格、商品销售数量
    需求是 想统计出商品总收入

$arr = array( array('price' =>10 , 'count' => 100 ),  array('price' =>20 , 'count' => 90 )  )

不用再用一个新的数组来存放结果 这里直接插入到旧的数组 变成新的数组

foreach ($arr as &$val) {

$val['total']=$val['price']*$val['count'];

}

其实和下面的代码没啥区别:

foreach ($arr as $k=>$val) {
      $arr[$k]['total']=$val['price']*$val['count'];
   }

但是就觉得逼格可能高点。

PHP删除数组中空值的方法介绍

笨方法:

<?php   
foreach( $arr as $k=>$v){   
    if( !$v )   
        unset( $arr[$k] );   
}   
?>

array_filter函数的功能是利用回调函数来对数组进行过滤,一直都以为用回调函数才能处理,却没有发现手册下面还有一句,

如果没有回调函数,那么默认就是删除数组中值为false的项目。

<?php

$entry = array(   
             0 => 'foo',   
             1 => false,   
             2 => -1,   
             3 => null,   
             4 => ''  
          );

print_r(array_filter($entry));   
?>

输出值为:

Array   
(   
    [0] => foo   
    [2] => -1   
)

所以说手册是个好东西,可惜我没看

PHP foreach 循环使用"&$val" 地址符“&”的更多相关文章

  1. php的foreach中使用取地址符,注意释放

    先来举个例子: <?php $array = array(1, 2, 3); foreach ($array as &$value) {} // unset($value); forea ...

  2. php的array数组 -------方法foreach循环时候,利用数组里值的引用地址(& )从而改变数组里的值

    /* * 把每个数组值后面都加个SQL然后返回数组 * foreach循环时候,直接用引用(&)的方式就能改变之前的数组 */public function array_foreach(){ ...

  3. yii2通过foreach循环遍历在一个用户组中取出id去另一表里查寻信息并且带着信息合并原数组信息---案例

    yii2通过foreach循环遍历在一个用户组中取出id去另一表里查寻信息并且带着信息合并元数组信息---案例 public function actionRandomLists(){ //查询到了所 ...

  4. PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么?

    PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么? 代码如下: <?php $arr = array('one','two','three'); fo ...

  5. C# foreach循环较for循环的优势与劣势

    一.foreach循环的优势 C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势: 1.foreach语句简洁 2.效率比for要高(C#是强类型检查,for循环 ...

  6. Effective Java 第三版——58. for-each循环优于传统for循环

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  7. 再学Java 之 foreach循环

    从Java 5 之后,Java提供了一种新的循环:foreach循环,这种循环遍历数组和集合更加简洁. foreach循环语法格式如下: for ( type variableName : array ...

  8. foreach循环时动态往数组里添加数据

    今天在用TP做项目的时候遇到一个问题,foreach的时候需要动态往数组里添加数据,示例代码如下: $arr = array( array('id'=>'字符串1','name'=>'字符 ...

  9. 禁止foreach循环使用remove/add----快速失败

    阿里巴巴开发手册中有一条: 7[强制]不要在 foreach 循环里进行元素的 remove / add 操作. remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterato ...

随机推荐

  1. git撤销提交(commit)

    我们知道Git有三大区(工作区.暂存区.版本库)以及几个状态(untracked.unstaged.uncommited) 一.简介 Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照 ...

  2. vue 教程

    1.安装 nodejs,检测 nodejs 环境(node -v). 2.安装vue-cli脚手架npm install vue-cli -g 3.在电脑的某个盘中创建项目,之后进入该项目. 4.初始 ...

  3. APP中内嵌H5页面为什么不能下载?

    在APP中内嵌H5页面,若页面上存在下载链接,没有任何反应,为什么呢? 原因是app中内嵌的H5页面是WebView解析的,什么是WebView呢? 在Android手机中内置了一款高性能webkit ...

  4. 排序算法(4)--Selection Sorting--选择排序[1]--Simple Selection Sort--简单(直接)选择排序

    1.基本思想   在要排序的一组数中,选出最小的一个数与第一个位置的数交换:然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止. 2.实现原理 每趟从待排序的 ...

  5. 4.SSM配置shiro权限管理

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.搭建SSM项目: http://www.cnblogs.com/yysbolg/p/6909021.html ...

  6. JavaScrip 概述 -- 前端知识

    JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECM ...

  7. JS中的兼容问题总结

    今天总结总结在JS里面遇到的兼容性问题 1.获取滚动距离的兼容性问题: document.documentElement.scrollTop  ||  document.body.scrollTop ...

  8. 【代码笔记】iOS-UIAlertView自动关闭

    一,效果图. 二,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIVi ...

  9. 葡萄城报表介绍:矩表(Tablix)

    一.矩表(Tablix)定义 Tablix 即表(Table)+矩阵(Matrix)+列表(List),它是报表中展示数据的一种工具,由表.矩阵.列表这三个具有相似性的报表项组成. 二.矩表(Tabl ...

  10. SQLServer 中的身份验证及登录问题

    SQLServer 中的身份验证及登录问题 by:授客 QQ:1033553122 身份验证 SQL Server 支持两种身份验证模式,即Windows 身份验证模式和混合模式. Windows 身 ...