【问题标题】:Cake PHP meta tag keyword giving "Array" instead of keywordsCake PHP 元标记关键字给出“数组”而不是关键字
【发布时间】:2015-02-14 09:49:02
【问题描述】:

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

【问题讨论】:

  • 使用
  • @Ananth 我会检查并告诉你
  • @Ananth 感谢您的努力。它运作良好。如果您可以将此添加为答案,我会接受并投票。

标签: php cakephp meta


【解决方案1】:

我评论中的代码有效,这很好,但你应该明白它为什么有效。

当您在 PHP 中回显一个数组时,它不会打印该数组的内容。它只打印“数组”。

您有时会正确看到元关键字的原因是 $meta_keywords 包含一个字符串。有时您只会看到“Array”,因为在这些情况下 $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”。

希望这有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多