PHP:我可以在变量中放入if语句吗?

时间:2010-09-29 13:21:00

标签: php wordpress rss if-statement

我仍然是PHP的初学者,很抱歉,如果这是一个愚蠢的问题=)

我正在尝试做的是在WordPress博客中,在我的RSS源中插入一个包含多个值(“成分”)的自定义字段。 (我还有其他帖子不是食谱,这就是为什么标题“成分”和“说明”都在if语句中。)这是我到目前为止的整个代码:

    <?php
    function insertIngredients($content) {
     /* get ingredients into variable $recipeStuff */
     $recipeStuff = 
   if ($ingredients = get_post_custom_values('ingredients')) {
    echo '<h3>Ingredients</h3><ul id="ingredients">';
    foreach ( $ingredients as $key => $value ) {
   echo '<li>';
   echo $value;
   echo '</li>';
    } 
    echo '</ul><h3>Instructions</h3>';
   }
     /* add before content */
        $content = $recipeStuff . $content;
        return $content;
    }
    /* Do it! */
    add_filter('the_excerpt_rss', 'insertIngredients');
    add_filter('the_content_rss', 'insertIngredients');
    ?>

但是得到一个“意外的IF”错误,所以我想我不能把所有这些都放在$ recipeStuff变量中=)我只是想不出怎么把它放在那里。

(如果重要的话,IF语句正是我在页面本身的帖子中使用的,它完美无缺!)

非常感谢您的任何帮助! = d

更新<!/强>

这就是我现在在代码中的内容:

function insertIngredients($content) {
/* test for presence of ingredients & set variables */
if ($ingredients = get_post_custom_values('ingredients')) {
    $heading1 = '<h3>Ingredients</h3><ul id="ingredients">';
    foreach ( $ingredients as $key => $value ) {
        $ings = '<li>' . $value . '</li>';
    }
    $heading2 = '</ul><h3>Instructions</h3>';
}
/* if no ingredients, variables are empty */
else { $heading1=''; $ings=''; $heading2=''; }

$recipeStuff = $heading1 . $ings . $heading2 ;

/* add before content */
    $content = $recipeStuff . $content;
    return $content;
}
/* Do it! */
add_filter('the_excerpt_rss', 'insertIngredients');
add_filter('the_content_rss', 'insertIngredients');

我不再收到错误消息,但这些成分未显示在RSS Feed中。我不确定是不是因为代码仍有问题,或者需要一段时间才能产生影响(虽然我不知道为什么会这样)?我使用FeedBurner,如果这有所不同。

非常感谢你的回答,大家。我将尝试一些不同的东西,然后再次更新。谢谢! =)

6 个答案:

答案 0 :(得分:8)

为什么不把它转过来?

if (condition) {
$recipeStuff = '';
}
else
{
$recipeStuff = '';
}

答案 1 :(得分:7)

即使这个问题已经过时了,IMO仍然缺少最佳答案,即三元运算符:

<?php
    $recipeStuff = (  HERE CHECK FOR INGREDIENTS  ) ? SOMETHING : SOMETHING ELSE ;
?>
如果检查为true,

$recipeStuff将获得值SOMETHING,否则将获得SOMETHING ELSE

答案 2 :(得分:2)

不,那不是真的那样。 它应该是(忽略函数头和其他):

<?php
if (  HERE CHECK FOR INGREDIENTS  ){
    $recipeStuff = SOMETHING ;
} else {
    $recipeStuff = SOMETHING ELSE ;
}
?>

因此,你不能使用if(在这种形式下)像内联函数。有一个内联替代方案,但很难在其中使用循环。 Echo将始终输出一些输出缓冲区。 Id est,你不能使用像“$ myVar = echo'thing';”这样的回声。只是在条件内做一个任务。

答案 3 :(得分:2)

最简单的方法是保持简单,只需

if (!yourcondition) {//if its not true
$recipeStuff = '';
}
else{//else if it is true
$recipeStuff = '';
}

答案 4 :(得分:1)

显然,这是不正确的PHP语法。你需要的是一个连接字符串(li等)并返回它的变量。

如果在$ recipeStuff变量之外,你应该移动。

答案 5 :(得分:1)

我认为这些是问题行

$recipeStuff = 
   if ($ingredients = get_post_custom_values('ingredients')) {
这是做什么的?或者它应该具有什么价值?

$recipeStuff = 

试试这个

if ($ingredients == get_post_custom_values('ingredients')) {

当使用等号来比较值时,它应该是双==或三=== 使用一个等号是你如何设置值

$one = 1; // assigns the value 1 to the variable $one

// Compares the values
if($one == 1) {
   echo "True<br />";
} else {
   echo "False<br />";
}

阅读Comparison operators page