使用PHP中的create_function()自定义中断命令/函数

时间:2021-10-02 01:14:44

I'm wondering if it is possible in PHP to create a custom break command/function.

我想知道在PHP中是否可以创建自定义中断命令/功能。

For example,

例如,

<?php
$custombreak = create_function('$a', 'if ($a == 3) break 1;');

$i = 0;
do {

    echo $i . '<br />';
    $i++;
    $custombreak($i);    //<-- I'd like to break the loop with a custom function.
    // if ($i==3)        //<-- this is not what I'm looking for
    //    break;      

} while ($i < 10);
?>

This is not valid PHP code but I hope you get what I'm trying to say. I'd like to escape the loop with the function.

这不是有效的PHP代码,但我希望你得到我想说的。我想用函数逃避循环。

4 个解决方案

#1


1  

Even if you create normal function

即使你创建了正常的功能

function foo() {
  break 2; // this is not valid
}

while(true) {
  foo();
}

that doesn't work. This is what programmers do:

这不起作用。这是程序员所做的:

function foo() {
  return true;
}

while(true) {
  if(foo()) break;
}

So your code would be..

所以你的代码将是......

#2


0  

<?php

function control($a){
    if($a==3)
        return false;
    return true;
}

$i = 0;
do {

    echo $i . '<br />';
    $i++;    

} while ( ($i < 10) && (control($i)) );

?>

is it an answer for this question ?

这个问题的答案是什么?

#3


0  

I found a way with Exceptions.

我找到了一种例外方式。

$i = 0;
try {
    do {
        $i++;
        echo $i . '<br />';
        custombreak($i);
    } while ($i <= 10);
} catch (Exception $e) {}

function custombreak($i) {
    if ($i > 3) throw new Exception("");
}

Thanks all.

谢谢大家。

#4


-1  

you can use this control in while loop. Don't need to write a function i think.

你可以在while循环中使用这个控件。我认为不需要写一个函数。

<?php

$i = 0;
do {

    echo $i . '<br />';
    $i++;    

} while ( ($i < 10) && ($i!=3) );
?>

You know multiple controls don't you ?

你知道多个控件不是吗?

#1


1  

Even if you create normal function

即使你创建了正常的功能

function foo() {
  break 2; // this is not valid
}

while(true) {
  foo();
}

that doesn't work. This is what programmers do:

这不起作用。这是程序员所做的:

function foo() {
  return true;
}

while(true) {
  if(foo()) break;
}

So your code would be..

所以你的代码将是......

#2


0  

<?php

function control($a){
    if($a==3)
        return false;
    return true;
}

$i = 0;
do {

    echo $i . '<br />';
    $i++;    

} while ( ($i < 10) && (control($i)) );

?>

is it an answer for this question ?

这个问题的答案是什么?

#3


0  

I found a way with Exceptions.

我找到了一种例外方式。

$i = 0;
try {
    do {
        $i++;
        echo $i . '<br />';
        custombreak($i);
    } while ($i <= 10);
} catch (Exception $e) {}

function custombreak($i) {
    if ($i > 3) throw new Exception("");
}

Thanks all.

谢谢大家。

#4


-1  

you can use this control in while loop. Don't need to write a function i think.

你可以在while循环中使用这个控件。我认为不需要写一个函数。

<?php

$i = 0;
do {

    echo $i . '<br />';
    $i++;    

} while ( ($i < 10) && ($i!=3) );
?>

You know multiple controls don't you ?

你知道多个控件不是吗?