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

时间:2014-02-23 16:06:28

标签: 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';
            }
}

现在我有了这个函数,如何访问它里面的$ cta变量?

E.g。以下不起作用:

<?php 
calltoaction();
print '<p>' . $cta_prompt . '</p>;
print '<span>' . $cta_button . '</span>;
?>

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

2 个答案:

答案 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>