我有一组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';
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有了这个函数,如何访问里面的$ cta变量呢?
例如以下不起作用:
<?php
calltoaction();
print '<p>' . $cta_prompt . '</p>;
print '<span>' . $cta_button . '</span>;
?>
Run Code Online (Sandbox Code Playgroud)
(上面给出的示例是一个缩减版本,我的完整代码有点复杂).
现在我有了这个函数,如何访问里面的$ 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);
Run Code Online (Sandbox Code Playgroud)
请注意,该函数接受参数($settings)而不是引用某个全局变量,并返回两个值以供在调用代码中使用.由调用代码决定其局部变量的变量名称应该是 - 函数不应该将变量注入全局范围.