WordPress功能= 0

用户名

我是一个使用php编码的绝对菜鸟,我想在笑了几下之后,对于专业人士来说,解决方案真的很简单。我为wp-template的category.php编写了一个简单的平均计算代码,它可以正常工作,但是我听说这是拆分设计和功能的更好方法,因此我尝试将其简化为模板函数:

<?php

$total = 0;
$count = 0;

foreach($posts as $post)
{
     if(get_field('weight')){ // If we have a value add it to the total and count it
        $total += get_field('weight');
        $count++;
     }
}

$Average = $total / $count; 
echo $Average;       
?>

结果始终为“ 0”,因为我猜他是从上方拉出变量并跳过了foreach-procedure。但为什么?

function averageit()
{
$total = 0;
$count = 0;
foreach($posts as $post)
    if(get_field('weight'))
    $total += get_field('weight');
    $count++;
    $Average = $total / $count;

  echo $Average; 
}

我希望有人能够帮助我。先感谢您!

赫卡

您的问题可能是可变范围之一如果可以的话,变量的“作用域”是该变量“存在”的代码部分。

在您的情况下,请考虑您的foreach循环,循环遍历$ posts变量中的项目。$ posts变量在哪里声明?我怀疑函数运行时该变量不存在,因此循环根本没有执行。

我建议对您的功能进行以下修改:

function find_average_weight($posts)
{
    $total = 0;
    $count = 0;
    foreach($posts as $post)
    {
        if(get_field('weight'))
        {
            $total += get_field('weight');
            $count++;
        }
    }
    $Average = $total / $count;
    return $Average; 
}

这里有一些变化。

  • 在写出函数时,我意识到您的foreach循环没有括号。这可能会导致可读性问题,并确实使逻辑无法正常工作,因此我将它们放在:)中
  • 我在函数中添加了一个参数以传递所需的“ $ posts”变量。
  • 我将函数名称更改为更具描述性的名称,尽管不知道确切的应用程序,但我可能在这里没有用,所以建议您多加一些建议。
  • 我更改了您的函数以返回一个值,然后您就可以用它执行任何操作。这使该功能对于您的意图更加不可知-也许在某个时候您将想要查找这些帖子的平均值而不输出结果?

要使用新功能并输出结果,您现在可以编写如下代码:

echo(find_average_weight($posts));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章