使用Arg值的PHP函数

时间:2014-03-17 13:09:37

标签: php function

我想到了我需要做些什么来使arg值可用于我在这个脚本中所包含的所有包含的函数。由于我对功能的概念相当新,我有点迷失为什么这不起作用,因为我认为它会。

我正在调用此脚本并在命令行传递争论。在这种情况下,我将使用:

php mode_set.php test

我首先尝试为争论值设置一个变量:

$ mode = $ argv [1];

并且仅引用该值;但是,我很快就知道它不适用于其他功能。

这让我意识到为了让它可用于其他功能,我需要为它创建一个函数:

<?php
$mode = $argv[1];

//Returns the Mode Value
function show_mode()
{
    if($mode == "test")
    {
        return "test";
    }
    elseif($mode == "parse")
    {
        return "parse";
    }
    else
    {
        return "false";
    }

}

if(show_mode() == "test")
{
Do something useful...not working.
}
?>

我得到的是它似乎忽略了争论,而是总是传递错误。

3 个答案:

答案 0 :(得分:3)

没有理由为什么该变量不可用于其他函数,因为它在全局命名空间中。您可能会犯下与您在下面所做的相同的错误。

除非您将其作为参数传递或使用全局关键字:

,否则该功能无法使用

方法1:传递参数(推荐)

$mode = $argv[1];

//Returns the Mode Value
function show_mode($mode)
{
    if($mode == "test")
    {
        return "test";
    }
    elseif($mode == "parse")
    {
        return "parse";
    }
    else
    {
        return "false";
    }

}

方法2:使用global关键字(不推荐)

$mode = $argv[1];

//Returns the Mode Value
function show_mode()
{
    global $mode;

    if($mode == "test")
    {
        return "test";
    }
    elseif($mode == "parse")
    {
        return "parse";
    }
    else
    {
        return "false";
    }

}

答案 1 :(得分:2)

您无法访问$mode,因为它超出了该功能的范围;也就是说,PHP只能在函数内部看到变量。要在函数内部访问$mode,您需要将其作为参数传递function($arg)

您的功能可以简化为:

function show_mode($mode)
{
    if ($mode == "test" || $mode == "parse") {
        return $mode;
    }
    return FALSE;   
}

简单英语:如果$modetestparse,请返回$mode。否则返回FALSE

调用该函数:

$mode = $argv[1];
echo show_mode($mode);

答案 2 :(得分:1)

你需要将你的论证传递给你的函数

$mode = $argv[1];

//Returns the Mode Value
function show_mode($mode)
{