在三元运算符中使用 return

发布于 2024-11-14 13:06:49 字数 245 浏览 3 评论 0原文

我尝试在三元运算符中使用 return,但收到错误:

Parse error: syntax error, unexpected T_RETURN 

这是代码:

$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);

这可能吗?

谢谢!

I'm trying to use return in a ternary operator, but receive an error:

Parse error: syntax error, unexpected T_RETURN 

Here's the code:

$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);

Is this possible?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

り繁华旳梦境 2024-11-21 13:06:49

这是正确的语法:

return  !$e ? '' : array('false', $e);

This is the correct syntax:

return  !$e ? '' : array('false', $e);
贪恋 2024-11-21 13:06:49

关闭。
您想要返回条件?a:b

Close.
You'd want return condition?a:b

追风人 2024-11-21 13:06:49

它在大多数语言中不起作用,因为 return 是一个语句(如 ifwhile 等),而不是可以执行以下操作的运算符:嵌套在表达式中。遵循相同的逻辑,您不会尝试在表达式中嵌套 if 语句:

// invalid because 'if' is a statement, cannot be nested, and yields no result
func(if ($a) $b; else $c;); 

// valid because ?: is an operator that yields a result
func($a ? $b : $c); 

它也不适用于 breakcontinue

It doesn't work in most languages because return is a statement (like if, while, etc.), rather than an operator that can be nested in an expression. Following the same logic you wouldn't try to nest an if statement within an expression:

// invalid because 'if' is a statement, cannot be nested, and yields no result
func(if ($a) $b; else $c;); 

// valid because ?: is an operator that yields a result
func($a ? $b : $c); 

It wouldn't work for break and continue as well.

黎歌 2024-11-21 13:06:49

不,这是不可能的,而且与以下相比也相当令人困惑:

if($e) {
    return array('false', $e);
}

No it's not possible, and it's also pretty confusing as compared to:

if($e) {
    return array('false', $e);
}
面犯桃花 2024-11-21 13:06:49

不可以。但是您可以为 return 语句使用三元表达式。

return (!$e) ? '' : array('false', $e);

注意:这可能不是所需的逻辑。我将其作为示例提供。

No. But you can have a ternary expression for the return statement.

return (!$e) ? '' : array('false', $e);

Note: This may not be the desired logic. I'm providing it as an example.

北方的巷 2024-11-21 13:06:49

不,那不可能。但是,以下情况是可能的:

$e = $this->return_errors();
return ( !$e ) ? '' : array( false, $e );

希望有所帮助。

No, that's not possible. The following, however, is possible:

$e = $this->return_errors();
return ( !$e ) ? '' : array( false, $e );

Hope that helps.

丢了幸福的猪 2024-11-21 13:06:49

扑通扑通,

如果你想用三元修改你的回报?

这是完全可能的。

在这个例子中,我有一个参数包含数组的函数。
此示例函数用于解析用户数组。
返回时,我有一个包含用户 ID 和用户名的数组。
但如果我没有任何用户会怎样?

<?php

public funtion parseUserTable(array $users) {
   $results = [];
   foreach ($users as $user) {
      $results[$users['id']] = $user['username'];
   }
  return $results ?: array('false', $e, "No users on table."); // Ternary operator.
}

抱歉我的英语不好,我是法国用户哈哈。

ND。

Plop,

if you want modify your return with ternary ?

it's totally possible.

In this exemple, i have a function with array in parameters.
This exemple function is used to parse users array.
On return i have an array with user id and user username.
But what happens if I do not have any users?

<?php

public funtion parseUserTable(array $users) {
   $results = [];
   foreach ($users as $user) {
      $results[$users['id']] = $user['username'];
   }
  return $results ?: array('false', $e, "No users on table."); // Ternary operator.
}

Sorry for my bad english, i'm french user haha.

N-D.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文