如果语句设置变量但语法错误

时间:2012-08-01 09:49:48

标签: php variables if-statement

我在使用此语句时出现语法错误

$catlist = if (function_exists('put_cat_icons')) {
put_cat_icons( wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id.'&echo=0'));
} else {
wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id);
}​​​​​​​

如果我删除$catlist =,我就没有错误。代码中的问题是什么?我可以设置这样的变量吗?

5 个答案:

答案 0 :(得分:1)

if因为分配的价值无效。不知道,你从哪里得到这个。但是,您可以使用此处的ternary operator

$catlist = function_exists('put_cat_icons')
    ? put_cat_icons( wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id.'&echo=0'))
    : wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id);

此外,当您查看代码时,您可能会发现wp_list_categories() - 调用在两种情况下都是相同的

$catlist = wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id);
if (function_exists('put_cat_icons')) $catlist = put_cat_icons($catlist);

答案 1 :(得分:0)

我建议您重新安排一些代码

if (function_exists('put_cat_icons')) {
    $catlist = put_cat_icons( wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id.'&echo=0'));
} else {
    $catlist = wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id);
}​​​​​​​

答案 2 :(得分:0)

您无法分配条件的结果 - 它们必须是独立的。可能你的意思是:

if (function_exists('put_cat_icons')) {
    $catlist = put_cat_icons( wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id.'&echo=0'));
} else {
    $catlist = wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id);
}​​​​​​​

你可能在普通和三元条件之间感到困惑,后者确实允许分配。

$something = 1 < 2 ? 'foo' : 'bar';

答案 3 :(得分:0)

从它的外观来看,你正在混合一个普通的if语句和ternary operator,它应该看起来像$someVar = (condition) ? "TRUE VALUE" : "FALSE VALUE";

在你的情况下使用三元运算符看起来像这样:

$catlist = (function_exists('put_cat_icons')) ? 
    put_cat_icons( wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id.'&echo=0')) : 
    wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id);

答案 4 :(得分:0)

我不认为这是设置变量的正确方法。你试图这样做吗

$catlist = (function_exists('put_cat_icons')) ? put_cat_icons( wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id.'&echo=0')):
wp_list_categories('echo=0&orderby=id&show_count=1&title_li=&child_of=' . $cat_id);