Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用foreach之外的值_Php_Wordpress - Fatal编程技术网

在php中使用foreach之外的值

在php中使用foreach之外的值,php,wordpress,Php,Wordpress,下面的代码是我在WordPress插件中的第一个代码: 函数链接\u在\u bio\u init()中{ /*一些代码*/ foreach($obj['data']作为$post){ $pic_link=$post['link']; $i=子链接替换($pic链接,“,-1); $i=substr($i,-11); 寄存器设置( “第页”, “图片链接”。$i ); 添加\u设置\u字段( “图片链接-”.$i, $picu链接, “链接”, “第页”, “部分” ); } }正如Alex所说

下面的代码是我在WordPress插件中的第一个代码:

函数链接\u在\u bio\u init()中{
/*一些代码*/
foreach($obj['data']作为$post){
$pic_link=$post['link'];
$i=子链接替换($pic链接,“,-1);
$i=substr($i,-11);
寄存器设置(
“第页”,
“图片链接”。$i
);
添加\u设置\u字段(
“图片链接-”.$i,
$picu链接,
“链接”,
“第页”,
“部分”
);
}

}
正如Alex所说,必须将变量传递给另一个函数。例如:

$var = functionOne();
$result = functionTwo($var);

function functionOne()
{
    return 2;
}

function functionTwo($var)
{
    echo $var; // This will output 2
}
另一种方法(如果可以避免的话,不建议使用),是使用globals:

function link_in_bio_init() {
  global $i;
/* some codes */

  foreach ($obj['data'] as $post) {
    $pic_link=$post['link'];
    $i = substr_replace($pic_link ,"",-1);
    $i = substr($i, -11);
    register_setting(
      'page',
      'pic_link_' . $i
    );

    add_settings_field(
      'pic-link-' . $i,
      $pic_link,
      'links',
      'page',
      'section'
    );
  }

}
然后:

function links() {
    global $i;
    $pic_link_id_text = 'pic_link_' . $i;
  $pic_link_id = esc_attr(get_option($pic_link_id_text, ''));
    ?>
    <div id="titlediv">
    <input id="title" type="text" name="<?php echo $pic_link_id_text ?>" value=<?php echo $pic_link_id; ?>">
  </div>
  <?php
};
函数链接(){
全球1美元;
$pic_link_id_text='pic_link.$i;
$pic_link_id=esc_attr(获取选项($pic_link_id_text');
?>

函数内部定义的变量仅在这些函数内部可用。请参阅。如果要将值从第一个函数传递到第二个函数,请返回它。@Alex Howansky我知道,连线部分是,当我在foreach外部定义$I时,没有区别。不应该有区别。
$I
在函数外部与函数内部不同的是,
$i
。您在哪里调用此函数
links()
?@Martin Dimitrov在
add\u settings\u field
数组中,第三个值是回调函数。用变量填充全局空间可能是你最不应该鼓励的事情…显示可能会有帮助…将值从第一个函数传递到第二个函数,使用全局返回是不好的做法。如果你想得到一个将变量传递到函数中,将其作为参数传递。如果要从函数中获取变量,请返回它。我完全同意,但由于我们不知道是否可以将变量传递到第二个函数,因此我给出了另一种解决方案。正如您所见,我说的第一件事是将变量传递到函数。不过,我将编辑答案包括一个大注释,警告除非绝对必要,否则不要使用globals。使用此解决方案,所有的
$i
都是相同的。@ElyasBehroozizade如果不是这样,您到底在寻找什么?