Php 变量不';不存在于功能之外吗?
您将看到Wordpress小部件代码(从Akismet获得的一点修改) 问题是$title;变量只能在一个函数中正常工作,全局变量等在这里似乎没有帮助 怎么了Php 变量不';不存在于功能之外吗?,php,wordpress,variables,Php,Wordpress,Variables,您将看到Wordpress小部件代码(从Akismet获得的一点修改) 问题是$title;变量只能在一个函数中正常工作,全局变量等在这里似乎没有帮助 怎么了 function myWidget_control() { $options = $newoptions = get_option('myWidget'); if ( isset( $_POST['myWidget-submit'] ) && $_POST["myWidget-submi
function myWidget_control() {
$options = $newoptions = get_option('myWidget');
if ( isset( $_POST['myWidget-submit'] ) && $_POST["myWidget-submit"] ) {
$newoptions['title'] = strip_tags(stripslashes($_POST["myWidget-title"]));
if ( empty($newoptions['title']) ) $newoptions['title'] = __('Spam Blocked');
}
if ( $options != $newoptions ) {
$options = $newoptions;
update_option('myWidget', $options);
}
$title = htmlspecialchars($options['title'], ENT_QUOTES); ?>
<p><label for="myWidget-title"><?php _e('Title:'); ?><input style="width: 250px;" id="myWidget-title" name="myWidget-title" type="text" value="<?php echo $title; ?>" /></label></p>
<input type="hidden" id="myWidget-submit" name="myWidget-submit" value="1" />
<?php
}
function myWidget()
{
echo $title; /* shows nothing but works perfectly 8 lines above! */
echo $options['title']; /* shows nothing once again */
}
函数myWidget\u control(){
$options=$newoptions=get_选项('myWidget');
如果(设置($_POST['myWidget-submit'])和&$_POST['myWidget-submit'])){
$newoptions['title']=strip_标记(stripslashes($_POST['myWidget title]]);
if(空($newoptions['title']))$newoptions['title']=\uuuu('Spam Blocked');
}
如果($options!=$newoptions){
$options=$newoptions;
更新_选项('myWidget',$options);
}
$title=htmlspecialchars($options['title',ENT_QUOTES);?>
这些变量是在函数本身中定义的,因此除非您告诉它们,否则无法在这些函数之外访问。请尝试全局调用它们
function myWidget_control() {
global $title, $options;
[yourcode]
}
function myWidget() {
global $title, $options;
echo $title;
echo $options['title'];
}
您可能不需要在这两个函数中对它们进行全局化,但我认为您需要这样做。这些变量是在函数本身中定义的,因此除非您告诉它们,否则无法在这些函数之外访问它们。尝试一下环球旅行吧
function myWidget_control() {
global $title, $options;
[yourcode]
}
function myWidget() {
global $title, $options;
echo $title;
echo $options['title'];
}
您可能不需要在这两个函数中对它们进行全局化,但我认为您需要这样做。范围仅限于定义变量的位置;在本例中,使用myWidget\u control()
方法。参见范围仅限于定义变量的位置;在本例中,使用myWidget\u control()
方法。请参见$title是在myWidget_control()函数的范围内定义的,因此仅在此处可用
如果您需要它在myWidget()中可用,它也必须在那里创建/检索,我建议再次调用get_选项(“myWidget”)来检索它
function myWidget() {
$options = get_option('myWidget');
$title = htmlspecialchars($options['title'], ENT_QUOTES);
echo $title;
}
$title是在myWidget_control()函数的范围内定义的,因此仅在此处可用
如果您需要它在myWidget()中可用,它也必须在那里创建/检索,我建议再次调用get_选项(“myWidget”)来检索它
function myWidget() {
$options = get_option('myWidget');
$title = htmlspecialchars($options['title'], ENT_QUOTES);
echo $title;
}
按预期工作-您没有声明任何全局变量。看,但当我声明它不会改变任何事情。我宣布全球$title;在第一个函数中,在第二个函数中,在这两个函数中,都不会发生任何事情;它并不包括来自任何地方的所有变量。关键字“global”不会将变量“声明”为全局变量。它只是使函数可以使用已经全局的变量;函数中定义的变量不在全局范围内。按预期工作-您没有声明任何全局变量。看,但当我声明它不会改变任何事情。我宣布全球$title;在第一个函数中,在第二个函数中,在这两个函数中,都不会发生任何事情;它并不包括来自任何地方的所有变量。关键字“global”不会将变量“声明”为全局变量。它只是使函数可以使用已经全局的变量;函数中定义的变量不在全局范围内。不起作用,事实上,它完全破坏了整个小部件。天哪,我过去喜欢Wordpress,但现在讨厌Wordpress。鉴于在第一个函数中以正确的方式检索值,在第二个函数中使用globals是不必要的。不起作用,事实上,它完全破坏了整个小部件。天哪,我过去喜欢Wordpress,但现在讨厌Wordpress。鉴于在第一个函数中以正确的方式检索值,在第二个函数中不需要使用全局变量。谢谢。只有这个解决方案有效。全球的-不。你能解释一下为什么全球的没有吗?因为它位于数组?@fomicz中,global
关键字允许访问全局范围内的变量(它不会以任何方式将变量放入全局范围)<代码>$options
未在全局范围中定义,而是在函数范围中定义。因此,global
关键字对其没有影响。@fomicz Globals可以工作,但变量的初始声明必须高于所有其他用途的级别(范围)。例如,您需要在函数之外声明$title,并使用'global$title;'在每个希望访问它的函数中。全球人通常都不赞成,因为通常有更好的方法来处理这种情况。谢谢。只有这个解决方案有效。全球的-不。你能解释一下为什么全球的没有吗?因为它位于数组?@fomicz中,global
关键字允许访问全局范围内的变量(它不会以任何方式将变量放入全局范围)<代码>$options未在全局范围中定义,而是在函数范围中定义。因此,global
关键字对其没有影响。@fomicz Globals可以工作,但变量的初始声明必须高于所有其他用途的级别(范围)。例如,您需要在函数之外声明$title,并使用'global$title;'在每个希望访问它的函数中。全球人通常都不赞成,因为通常有更好的方法来处理这种情况。