php 5.6 引用传递,升级到5.6.x后如何在php中修复引用传递

我最近将fom php 5.2升级到5.6,并且有一些代码我无法修复:

//Finds users with the same ip- or email-address

function find_related_users($user_id) {

global $pdo;

//print_R($pdo);

//Let SQL do the magic!

$sth = $pdo->prepare('CALL find_related_users(?)');

$sth->execute(array($user_id));

//print_R($sth);

//Contains references to all users by id, to check if a user has already been processed

$users_by_id = array();

//Contains arrays of references to users by depth

$users_by_depth = array();

while ($row = $sth->fetchObject()) {

//Create array for current depth, if not present

if (!isset($users_by_depth[$row->depth]))

$users_by_depth[$row->depth] = array();

//If the user is new

if (!isset($users_by_id[$row->id])) {

//Create user array

$user = array(

'id' => $row->id,

'name' => $row->name,

'email' => $row->email,

'depth' => $row->depth,

'adverts' => array()

);

//Add all users to depth array

@array_push($users_by_depth[$row->depth], &$user);

//Add references to all users to id array (necessary to check if the id has already been processed)

$users_by_id[$row->id] = &$user;

}

//If user already exists

else

$user = &$users_by_id[$row->id];

//Add advert to user

if ($row->advert_id != null)

array_push($user['adverts'], array(

'id' => $row->advert_id,

'title' => $row->advert_title,

'msgs' => $row->msgs,

'url' => $row->url

));

#print_r($user);

//Unset $user variable !!!

//If this is missing, all references in the array point to the same user

unset($user);

}

//Return users, grouped by depth

return $users_by_depth;

}

如果仅删除美元符号前的与号,该功能将停止按预期工作.从关于stackoverflow的其他问题中,我发现这是通过引用进行的调用,对于新的php版本,它将停止.但是我找不到解决方案.

感谢您对如何为php 5.6.x更新此代码的任何帮助

解决方法:

您的代码可能永远无法正常工作,因为您正在抑制array_push()调用中的错误.请注意,只有array_push()的第一个参数通过引用传递,其他值始终按值传递.

您应该删除错误抑制器@(切勿在自己的代码中使用它),在这种情况下,您还可以执行以下操作:

$users_by_depth[$row->depth][] = &$user;

^^ add an element just like `array_push`

现在,您在$users_by_depth中的新值将包含对$user变量的引用.

标签:variables,reference,php

来源: https://codeday.me/bug/20191120/2041320.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip arc

RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip archive: failed finding central directory 原因分析 这个报错是出现在PyTorch在读入模型参数时: checkpoint torch.load(epoch_15.pth, map_locationcpu)…

xp搭建 php环境,windows xp 下 LAMP环境搭建

1. apache安装步骤如下图在浏览器中输入:localhost,出现下面页面说明已成功安装apache。2. mysql安装如下图显示在运行里面输入cmd ,然后连接测试mysql ,如图所示:3. php安装(1)将php压缩包解压到安装路径中的php目录…

C++中的虚函数(表)实现机制以及用C语言对其进行的模拟实现

C中的虚函数(表)实现机制以及用C语言对其进行的模拟实现 声明:本文非博主原创,转自https://blog.twofei.com/496/,博主读后受益良多,特地转载,一是希望好文能有更多人看到,二是为了日后自己查阅。 前言 …

php 前端模板 yii,php – Yii2高级模板:添加独立网页

我在backend / views / site下添加了help.php,并在SiteController.php下声明了一个能够识别链接的函数public function behaviors(){return [access > [class > AccessControl::className(),rules > [[actions > [login, error],allow > true,],[actions > […

C++中数组和指针的关系(区别)详解

C中数组和指针的关系(区别)详解 本文转自:http://c.biancheng.net/view/1472.html 博主在阅读后将文中几个知识点提出来放在前面: 没有方括号和下标的数组名称实际上代表数组的起始地址,这意味着数组名称实际上就是…

安装php独立环境,0507-php独立环境的安装与配置 Web程序 - 贪吃蛇学院-专业IT技术平台...

1.在一个纯英文目录下新建三个文件夹2.安装apache(选择好版本)过程中该填的按格式填好,其余的只更改安装目录即可如果报错1901是安装版本的问题。检查:安装完成后localhost打开为It works!添加到电脑属性环境变量:3.将php文件解压文档放到AMP…

linux中PATH变量-详细介绍

转自:https://blog.csdn.net/haozhepeng/article/details/100584451 转载者勘误 原文最后提到的 echo 命令对于环境变量的修改无影响。这是肯定的,echo 命令相当于只是一个打印的函数(比如 Python 中的 print)。这里要修改环境变…

php assert eval,代码执行函数之一句话木马

前言大家好,我是阿里斯,一名IT行业小白。非常抱歉,昨天的内容出现瑕疵比较多,今天重新整理后再次发出,修改并添加了细节,另增加了常见的命令执行函数如果哪里不足,还请各位表哥指出。eval和asse…

显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理

显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理 转自:https://www.cnblogs.com/marsggbo/p/11838823.html#nvccnvidia-smi GPU型号含义 显卡: 简单理解这个就是我们前面说的GPU,尤其指NVIDIA公司生产的GPU系列,因为后面介绍的…

php中msubstr,PHP学习:thinkphp中字符截取函数msubstr()用法分析

《PHP学习:thinkphp中字符截取函数msubstr()用法分析》要点:本文介绍了PHP学习:thinkphp中字符截取函数msubstr()用法分析,希望对您有用。如果有疑问,可以联系我们。本文实例讲述了thinkphp中字符截取函数msubstr()用法…

VS Code的Error: Running the contributed command: ‘_workbench.downloadResource‘ failed解决

VS Code的Error: Running the contributed command: _workbench.downloadResource failed解决 转自:https://blog.csdn.net/ibless/article/details/118610776 1 问题描述 此前,本人参考网上教程在VS Code中配置了“Remote SSH”插件(比如这…

Oracle闪回报错,oracle 闪回区满了,ORA-19815

oracle 闪回区满了,查看日志报错:ORA-19815,命令行输入:sqlplus / as sysdbastartup mount //如果你的数据库出现了无法连接的情况时,可以加上这句select file_type, percent_space_used as used,percent_space_rec…

[2021-ICCV] MUSIQ Multi-scale Image Quality Transformer 论文简析

[2021-ICCV] MUSIQ: Multi-scale Image Quality Transformer 论文简析 论文:https://arxiv.org/abs/2108.05997 代码:https://github.com/google-research/google-research/tree/master/musiq 概述 当前SOTA的IQA(图像质量评估&#xff0…

安装oracle不动了,windows2008安装ORACLE到2%不动的问题 | 信春哥,系统稳,闭眼上线不回滚!...

最近又有网友遇到在windows2008服务器上安装ORACLE软件时到2%就卡住不动的问题,下面是该网友的描述:oralce 11g r2 windows server 2008 R2安装到最后一步复制数据文件时卡到2% 不走了内存一直飙升求解决这个问题前段时间也有人遇到过,但是他…

手把手教你入门Git --- Git使用指南(Linux)

手把手教你入门Git — Git使用指南(Linux) 系统:ubuntu 18.04 LTS 本文所有git命令操作实验具有连续性,git小白完全可以从头到尾跟着本文所有给出的命令走一遍,就会对git有一个初步的了解,应当能做到会用并…

linux修改主机名后oracle em控制台起不来,更改计算机名后导致Oracle dbconsole无法启动问题解决方法...

今天不知道哪根筋搭歪了,看着Oracle EM控制台的主机名WIN-LOSGI0TCOG0乱七八糟的很不爽,就把它给改了。然后Oracle EM就上不去了,Oracledbconsole服务起不来,我尝试把所有“WIN-LOSGI0TCOG0”替换成“ggsjy”,找了好多…

Shell脚本多行换行报错:- unrecognized arguments- \

shell error: unrecognized arguments: \ 在使用linux长命令时,我们通常会用一个shell脚本加\分行的形式来更清晰展示参数。 这时有一个注意事项:在\后必须紧跟回车, 否则会导致后面的参数无法传入。因为这时程序会将后面的参数算作一条新命…

shell脚本长命令带换行 注释方法

shell脚本长命令带换行 注释方法 命令行传参 在训练深度学习网络时,我们每次实验通常会有许多超参数需要设置,如batch size, epoch, gpu id, arch甚至还有一些具体的模型结构等。这事我们通常使用python模块argparse,在命令行进行传参。 比…

php对中英文字符串进行截取,利用php怎么对中英文混合的字符串进行截取

利用php怎么对中英文混合的字符串进行截取发布时间:2021-01-04 15:31:24来源:亿速云阅读:103作者:Leah利用php怎么对中英文混合的字符串进行截取?很多新手对此不是很清楚,为了帮助大家解决这个难题&#xf…

Linux查找命令find、loacte、whereis、which、type梳理

Linux查找命令find、loacte、whereis、which、type梳理 Linux操作系统中有5种常用的查找命令:find,locate,whereis,which,type,他们分别用于查找不同的东西,本文将就他们各自的功能进行一下梳理…