PHP:访问存储在函数中的变量

big*_*ile 0 php

我有一组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)

(上面给出的示例是一个缩减版本,我的完整代码有点复杂).

mea*_*gar 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);
Run Code Online (Sandbox Code Playgroud)

请注意,该函数接受参数($settings)而不是引用某个全局变量,并返回两个值以供在调用代码中使用.由调用代码决定其局部变量的变量名称应该是 - 函数不应该将变量注入全局范围.