我想到了我需要做些什么来使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.
}
?>
我得到的是它似乎忽略了争论,而是总是传递错误。
答案 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;
}
简单英语:如果$mode
是test
或parse
,请返回$mode
。否则返回FALSE
。
调用该函数:
$mode = $argv[1];
echo show_mode($mode);
答案 2 :(得分:1)
你需要将你的论证传递给你的函数
$mode = $argv[1];
//Returns the Mode Value
function show_mode($mode)
{