调用php function()在每个图标前显示名称

时间:2017-06-25 00:24:31

标签: php raspberry-pi gpio

我想在图像on.png或off.png之前显示每个中继的名称。 我有2页:

switch.php and functions.php

switch.php,为每个继电器显示或关闭图标,读取gpio状态。 functions.php显示每个中继的名称。

我不知道如何在switch.php中调用类似r $ i()的函数来显示如下内容:

relay0<img id='button_0' src='images/off.png' alt='off'/><br>
relay1<img id='button_1' src='images/off.png' alt='off'/>

有我的脚本:

// switch.php
<?php
 $status = array(0, 0, 0, 0, 0, 0, 0);

 for ($i = 0; $i < count($status); $i++) {
    //set the pin's mode to output and read them
    system("gpio mode ".$i." out");
    exec ("gpio read ".$i, $status[$i], $return );
    if ($status[$i][0] == 0 ) {
        echo ("<img id='relay_".$i."' src='images/off.png' alt='off'/><br>");
    }
    if ($status[$i][0] == 1 ) {
        echo ("<img id='relay_".$i."' src='images/on.png' alt='on'/><br>");
    }    
 }

// function.php
<?php
function r0(){
   echo "relay0";
}
function r1(){
   echo "relay1";
}
function r2(){
   echo "relay2";
}
function r3(){
   echo "relay3";
}
?>

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

如果继电器的ID与您不需要function.php脚本的按钮的ID匹配,请尝试以下操作:

<强> switch.php

<?php
 $status = array(0, 0, 0, 0, 0, 0, 0);

 for ($i = 0; $i < count($status); $i++) {
    //set the pin's mode to output and read them
    system("gpio mode ".$i." out");
    exec ("gpio read ".$i, $status[$i], $return );
    if ($status[$i][0] == 0 ) {
    echo ("relay$i<img id='relay_".$i."' src='images/off.png' alt='off'/><br>");
    }
    if ($status[$i][0] == 1 ) {
    echo ("relay$i<img id='relay_".$i."' src='images/on.png' alt='on'/><br>");
    }    
 }

注意:当你使用双引号时,不需要用点来连接变量。

我希望这对你有所帮助。

更新:另一个方法是使用数组,看看......

<?php

$relays = array();
$relays[] = "A";
$relays[] = "B";
$relays[] = "C";
$relays[] = "D";

$status = array(0, 0, 0, 0, 0, 0, 0);

for ($i = 0; $i < count($status); $i++) {
    //set the pin's mode to output and read them
    system("gpio mode ".$i." out");
    exec ("gpio read ".$i, $status[$i], $return );
    if ($status[$i][0] == 0 ) {
        echo ("{$relays[$i]}<img id='relay_".$i."' src='images/off.png' alt='off'/><br>");
    }
    if ($status[$i][0] == 1 ) {
        echo ("{$relays[$i]}<img id='relay_".$i."' src='images/on.png' alt='on'/><br>");
    }
}

答案 1 :(得分:0)

假设您的function.php文件将来应该被更多功能替换,您可以这样做:

function r0() {
    echo 'relay0';
}

function r1() {
    echo 'relay1';
}


$i = 1;
$fn = "r$i"; // string containing function name
$fn(); // this will call function 'r1'

call_user_func($fn); // this will also call 'r1'

希望这会有所帮助:)

答案 2 :(得分:0)

您可以使用变量函数

$function = 'r'.$i; //set function name
$function(); //call the function

更多信息:http://php.net/manual/en/functions.variable-functions.php