热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP函数返回值错误,奇怪的PHP错误:’不能在写上下文中使用函数返回值’

我收到了这个错误,我无法做出它的头或尾。确切的错误消息是:Fatalerror:Cantusefunctionreturnvalueinwritecon

我收到了这个错误,我无法做出它的头或尾。

确切的错误消息是:

Fatal error: Can't use function return

value in write context in

/home/curricle/public_html/descarga/index.php

on line 48

第48行是:

if (isset($_POST('sms_code') == TRUE ) {

谁知道发生了什么?

PS这是完整的功能,如果有帮助:

function validate_sms_code() {

$state = NOTHING_SUBMITED;

if (isset($_POST('sms_code') == TRUE ) {

$sms_code = clean_up($_POST('sms_code'));

$return_code = get_sepomo_code($sms_code);

switch($return_code) {

case 1:

//no error

$state = CORRECT_CODE;

break;

case 2:

// code already used

$state = CODE_ALREADY_USED;

break;

case 3:

// wrong code

$state = WRONG_CODE;

break;

case 4:

// generic error

$state = UNKNOWN_SEPOMO_CODE;

break;

default:

// unknown error

$state = UNKNOWN_SEPOMO_CODE;

throw new Exception('Unknown sepomo code: ' . $return_code);

break;

}

} else {

$state = NOTHING_SUBMITED;

}

dispatch_on_state($state);

}

顺便说一句,$ _POST(sms_code)应该是$ _POST [sms_code]。

此外,不需要if语句中的else子句。 $state不会被修改,如果已经是那个值,则无需将其重置为NOTHING_SUBMITED。

未来的人们,任何人都可以解释这些信息的实际含义吗?

在函数返回上使用empty时也会发生这种情况:

!empty(trim($someText)) and doSomething()

因为empty不是一个函数而是一个语言构造(不确定),它只需要变量:

对:

empty($someVar)

错误:

empty(someFunc())

从PHP 5.5开始,它支持的不仅仅是变量。但如果您在5.5之前需要它,请使用trim($name) == false。从空文档。

Dang,我也得到了这个错误,做了你的确切示例(修剪为空)。谢谢x3。多么奇怪的错误..我仍然不完全理解:/ empty()可以接受一个字符串..而trim()返回一个字符串..所以wth?

@Shredder - 因为empty()实际上不是一个函数;它是一种语言结构,如echo。 PHP解析器以不同方式处理语言结构。在empty的情况下,它将参数视为变量,而不是要评估的内容,因此如果您尝试传递函数,它会中断。至少这是我对它的理解。更多信息在这里和这里。

这也是我遇到的确切错误。为什么这不是最佳答案!?

做出这个最佳答案或在接受的答案上添加一个参考。

我没有,我的同事得到了这个错误。随后出现了混乱,直到我检查了文档 - 从PHP 5.5开始,empty()将接受函数和变量的返回。 us3.php.net/empty

霍瑞为5.5!在升级之前,您可以将这样的内容扔到主函数包含文件中:function mTEE($val){ return empty($val); }

就像@JamesAlday所说,来自文档Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, the following will not work: empty(trim($name)). Instead, use trim($name) == false.。

非常感谢!我升级到PHP 5.5,它解决了我的问题。

谢谢!非常重要的事情要知道! :)虽然这个错误没有出现在5.4以上的版本中我认为!但仍然是非常好的注意事项。

我知道它迟到但是谢谢,这是我的问题,欣赏修复:)。我一直在努力,因为它在本地工作但不在我们的服务器上。

我知道这是一个老问题,但我遇到了同样的事情,它是内联trim()导致5.4.x上的问题。

你的意思是

if (isset($_POST['sms_code']) == TRUE ) {

虽然顺便说一句,你的意思是

if(isset($_POST['sms_code'])) {

......或if (isset($_POST[sms_code]) === TRUE ) { :-)

我也找到了我面临的问题的解决方案,所以仅供参考 - 这也适用于$ _REQUEST(页面URL中的参数)。

我意识到我已经超级晚了,但它还依赖于PHP版本,对吗?我很确定这在后来的PHP版本中是合法的,比如5.6,但我认为它在5.3中没有

if (isset($_POST('sms_code') == TRUE ) {

将此行更改为

if (isset($_POST['sms_code']) == TRUE ) {

你正在使用parentheseis()为$_POST,但你想要方括号[]

:)

要么

if (isset($_POST['sms_code']) && $_POST['sms_code']) {

//this lets in this block only if $_POST['sms_code'] has some value

不,你不能写"if(isset($ _ POST [sms_code] == TRUE){",theres a missing")"。

纠正:P ..

+你使用括号的几十个酷点...但你想要方括号,这就是我的问题(这导致我这个问题)是

呃,呃,伙计!现在,如果解析器会说"我期望在数组变量名称之后使用方括号,呃!",它听起来会比"在写上下文中使用函数返回值"更酷。我可能会向PHP人员提交这个建议。

对于WORDPRESS:

代替:

if (empty(get_option('smth')))

应该:

if (!get_option('smth'))

谢谢Tazo!

正确的语法(最后你的括号丢失):

if (isset($_POST['sms_code']) == TRUE ) {

^

附:你不需要== TRUE部分,因为已经返回了BOOLEAN(true / false)。

这可能发生在多个场景中,下面是一个众所周知的场景列表:

// calling empty on a function

empty(myFunction($myVariable)); // the return value of myFunction should be saved into a variable

// then you can use empty on your variable

//使用括号访问数组的元素,括号用于调用函数

if (isset($_POST('sms_code') == TRUE ) { ...

// that should be if(isset($_POST['sms_code']) == TRUE)

当我们尝试增加如下函数的结果时,也可以触发这个:

$myCounter = '356';

$myCounter = intVal($myCounter)++; // we try to increment the result of the intVal...

// like the first case, the ++ needs to be called on a variable, a variable should hold the the return of the function then we can call ++ operator on it.

你想得到错误吗?因为这是你如何得到错误。不,但严重的是,不要这样做。就像做if(i++)一样,它可能看起来比递增计数器然后评估它的值更短,但是如果它有问题就会让你头疼。编辑:我并不是暗示你这样做,只是指出新的程序员阅读答案并认为这是一个巧妙的事情,在计算或评估正在增加的时候增加值。

@VictorD。我只是说在那种情况下可能会发生错误,这意味着这样做并不好。

我可以再推荐一次吗?在if语句中执行=而不是==。

对我来说它是PHP版本,升级到7.0 :)

我也有类似你的问题。问题是你使用的是旧的PHP版本。我已升级到PHP 5.6,问题不再存在。

问题出在()你必须去[]

if (isset($_POST('sms_code') == TRUE)

通过

if (isset($_POST['sms_code'] == TRUE)

由于语法错误导致此错误被触发的另一种情况:

ucwords($variable) = $string;

是因为ucwords返回一个字符串并且调用的上下文不正确,如果您尝试使用$Test = ; ${ucwords(test)} = String new !; echo $Test;,则显示分配的新值。

由于语法错误,我也遇到了这个问题。在数组索引中使用"("而不是"[":

foreach($arr_parameters as $arr_key=>$arr_value) {

$arr_named_parameters(":$arr_key") = $arr_value;

}



推荐阅读
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 基于Web的Kafka管理工具Kafkamanager首次访问Web界面的详细配置指南(附图解)
    首次访问Kafkamanager Web界面时,需要对Kafka集群进行配置。这一过程相对简单,用户只需依次点击【Cluster】>【Add Cluster】,按照提示完成相关设置即可。本文将通过图文并茂的方式,详细介绍每一步的配置步骤,帮助用户快速上手Kafkamanager。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
author-avatar
mobiledu2502931997
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有