就Cake PHP而言,我是新手。
我网站中的某些网页提供了如下所示的元关键字。
<meta content="Array" name="keywords"></meta>
我发现元数据来自app/views/layouts/defautlt.ctp
,其中我们使用以下代码来显示元关键字。
<meta name="keywords" content="<?php echo $meta_keywords; ?>" />
我被困在这里。我怎样才能发现错误是什么。
注意:某些页面正确显示元关键字。但大多数网页都将Array
显示为关键字。
我还在下面添加了元描述代码。
<meta name="description" content="<?php echo reset($meta_description); ?>" />
将关键字显示为Array
的原因是什么?
答案 0 :(得分:1)
我的评论中的代码有效,但没关系,但你应该理解它的工作原理。
在PHP中回显数组时,它不会打印数组的内容。它只打印“数组”。
您有时会正确看到元关键字的原因是因为$ meta_keywords包含字符串。有时您只看到“数组”,因为在这些情况下,$ meta_keywords包含一个字符串数组。
$meta_keywords = "my_keyword";
echo $meta_keywords; // prints "my_keyword"
$meta_keywords = array("kw1", "kw2", "kw3");
echo $meta_keywords; // prints "Array"
如果要打印数组的内容,可以使用print_r()功能。
$meta_keywords = array("kw1", "kw2", "kw3");
print_r($meta_keywords);
// prints:
// Array ( [0] => kw1
// [1] => kw2
// [2] => kw3
//)
如果要将数组的内容加入字符串,可以使用implode()函数。要检查变量是否为数组,请使用is_array()函数。
?:是PHP中的ternary operator。代码:
echo (is_array($meta_keywords)) ? implode(",", $meta_keywords) : $meta_keywords;
相当于:
if (is_array($meta_keywords)) {
echo implode(",", $meta_keywords);
} else {
echo $meta_keywords;
}
所以当
$meta_keywords = "my_keyword",
is_array()
返回false并输出“my_keyword”。
何时
$meta_keywords = array("kw1", "kw2", "kw3"),
is_array()
返回true,输出“kw1,kw2,kw3”。
希望这有用。