相关疑难解决方法(0)

unset和= null之间的区别

从一个随机的php.net帖子:

如果你正在做$ whatever = null; 那么你正在重写变量的数据.您可能会更快地释放/缩小内存,但它可能会更快地从真正需要它们的代码中窃取CPU周期,从而导致更长的总体执行时间.

显然这是无可争议的事实,所以也许有人会如此善良地解释.

我的意思是,什么,unset神奇地没有执行任何汇编指令,$whatever = null;而是?如上所述,答案和说法一样有用

$ whatever = null重置缓冲区和L1缓存,而unset清除缓冲区并重置L2缓存.

Techno mumbo jumbo并不构成答案.

php

49
推荐指数
4
解决办法
2万
查看次数

按字符串调用方法?

Class MyClass{
  private $data=array('action'=>'insert');
  public function insert(){
    echo 'called insert';
  }

  public function run(){
    $this->$this->data['action']();
  }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用:

$this->$this->data['action']();
Run Code Online (Sandbox Code Playgroud)

只有可能使用call_user_func();?

php oop

45
推荐指数
2
解决办法
4万
查看次数

PHP闭包在IF语句中返回什么?

我的目标是在if()语句中放入一些复杂的逻辑.假设我有一个值数组,如果我的数组中的所有内容都非零,我将执行一些代码.通常情况下,我可以说,$valid = true,foreach我的阵列,并设置$valid = false当发现一个零.然后我会运行我的代码if ($valid).或者,我可以将我的循环放入一个函数中并将函数放在我的函数中if().

但是我很懒,所以我宁愿不要使用一堆"有效"标志,我宁愿不写一个只在一个地方使用的全新功能.

所以让我说我有这个:

if ($q = function() { return 'foo'; }) {
  echo $q;
}
else {
  echo 'false';
}
Run Code Online (Sandbox Code Playgroud)

我期待if得到的'foo',得分为真.我的闭包致力于$q并且语句执行.$q返回字符串foo,并打印'foo'.

相反,我得到了错误Object of class Closure could not be converted to string.

所以让我们试试这个:

if (function() { return false; }) {
  echo 'foo';
}
else {
  echo 'true';
}
Run Code Online (Sandbox Code Playgroud)

我期待我的函数返回false并打印'true'.相反,打印'foo'.

我正在采取的方式有什么问题?好像它在说,"是的,这肯定是一个功能!" 而不是"不,因为函数评估为假".有没有办法做我想做的事情?

php anonymous-function

8
推荐指数
1
解决办法
2541
查看次数

在火柴臂中使用闭包

当我运行以下代码作为condition_2匹配结果时,其内容$foo是一个闭包实例,但我想要该闭包应返回的结果。你怎么做到这一点?condition_1正在按预期工作。

$foo = match ($conditions) {
    'condition_1' => 'some text',
    'condition_2' => function () {
        $result = '';
        // crazy programming
        return $result;
    }
}
Run Code Online (Sandbox Code Playgroud)

php match php-8

7
推荐指数
1
解决办法
2830
查看次数

我可以立即评估匿名函数吗?

可能重复:
立即执行匿名函数

我想立即评估一个匿名函数,而不是它在方法args中作为Closure对象出现.这可能吗?

例如:

$obj = MyClass;
$obj->Foo(function(){return "bar";}); // passes a Closure into Foo()
$obj->Foo(function(){return "bar";}()); // passes the string "bar" into Foo()?
Run Code Online (Sandbox Code Playgroud)

第3行是非法语法 - 有没有办法做到这一点?

谢谢

php lambda anonymous-function

5
推荐指数
1
解决办法
315
查看次数

5
推荐指数
2
解决办法
5009
查看次数

php使用匿名函数动态计算变量

有时在初始化变量时,您希望传递它们太复杂而无法在单个命令中计算的值,因此您通常先计算一个虚拟变量然后传递其值,或者在其他地方定义一个函数,并将其返回值传递给我们的变量.

我的问题(愿望)是,是否可以使用匿名函数动态计算变量?

例如,而不是使用这个:

$post = get_post();
$id = $post->ID;

$array = array(
    'foo' => 'hi!',
    'bar' => $id
);
Run Code Online (Sandbox Code Playgroud)

让我们使用这样的东西:

$array = array(
    'foo' => 'hi!',
    'bar' => (function(){
        $post = get_post();
        return $post->ID;
    })
);
Run Code Online (Sandbox Code Playgroud)

代码完全是随机的.

php anonymous-function

5
推荐指数
1
解决办法
106
查看次数

标签 统计

php ×6

anonymous-function ×3

function ×1

javascript ×1

lambda ×1

match ×1

oop ×1

php-8 ×1