cakeCakePHP元标签关键字给定“;数组“;而不是关键字


cakeCake PHP meta tag keyword giving "Array" instead of keywords

在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的原因是什么?

我的注释中的代码是有效的,这很好,但您应该理解它为什么有效。

在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
//)

当您想将数组的内容连接到字符串中时,可以使用内爆()函数。要检查变量是否为数组,请使用is_array()函数。

?:是PHP中的三元运算符。代码:

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"。

希望这会有所帮助。