我有一组PHP变量(以$cta
开头)。我使用PHP“If”测试,根据其他变量的值更改这些变量的值。
我在PHP文件的几个位置使用这些变量(并根据位置将变量包装在不同的HTML代码中),所以我想将'If'测试代码存储在函数中。
这样,我的代码将更有效率,因为'If'测试将在一个地方。
这是我的功能:
function calltoaction {
if ($cta_settings == 'cta_main') {
$cta_prompt = 'We are ready for your call';
$cta_button = 'Contact Us';
}
($cta_settings == 'cta_secondary') {
$cta_prompt = 'Call us for fast professional service';
$cta_button = 'Call Us';
}
}
现在我有了这个函数,如何访问它里面的$ cta变量?
E.g。以下不起作用:
<?php
calltoaction();
print '<p>' . $cta_prompt . '</p>;
print '<span>' . $cta_button . '</span>;
?>
(上面给出的示例是一个缩减版本,我的完整代码有点复杂)。
答案 0 :(得分:5)
现在我有了这个函数,如何访问它里面的$ cta变量?
你没有。这不是函数的工作方式。您还有第二个错误,$cta_settings
将不会在您的函数中设置,因为您尚未将其传递或声明为全局,这意味着您的提示/按钮变量永远不会被设置。
您的功能应接受输入并返回输出。如果要从函数中传递值以供在其他地方使用,则应return
。如果需要返回复杂的结果,请使用数组或对象。
你应该不为此使用全局变量。使用全局变量会破坏函数要提供的封装。
在你的情况下,我会使用这样的东西:
function calltoaction($settings) {
if ($settings == 'cta_main') {
return array('We are ready for your call', 'Contact Us');
} else if ($settings == 'cta_secondary') {
return array('Call us for fast professional service', 'Call Us');
}
}
list($prompt, $button) = calltoaction($cta_settings);
请注意,该函数接受参数($settings
)而不是引用某个全局变量,并返回两个值以供在调用代码中使用。由调用代码决定其 local 变量的变量名称应该是 - 函数不应该将变量注入全局范围。
答案 1 :(得分:1)
也许你想做这样的事情:
<?php
function callToAction($cta_settings)
{
if ($cta_settings == 'cta_main') {
$cta_prompt = 'We are ready for your call';
$cta_button = 'Contact Us';
} elseif ($cta_settings == 'cta_secondary') {
$cta_prompt = 'Call us for fast professional service';
$cta_button = 'Call Us';
} else {
$cta_prompt = 'Call us for fast professional service';
$cta_button = 'Call Us';
}
return ["cta_prompt" => $cta_prompt, "cta_button" => $cta_button];
}
$cta1 = callToAction('cta_main');
?>
<p><?php echo $cta1['cta_prompt']; ?></p>
<span><?php echo $cta1['cta_button']; ?></span>