热门标签 | 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;

}



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
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社区 版权所有