【问题标题】:Adding a little String variable in an Array Causes Syntax Error?在数组中添加一个小字符串变量会导致语法错误?
【发布时间】:2011-03-19 02:47:55
【问题描述】:

我正在尝试在{target} 之后添加一个破折号- 和一个定义的字符串$pageurle,以便href 中的url(见下面的代码)扩展为自然破折号和内容变量 $pageurle

查看我想在 href 后面插入破折号和变量的现有代码:

// html for breadcrumbs
var $breadcrumb_templates = array(
    'separator' => '→',
    'link'      => '<a href="{target}">{name}</a>',
    'wrapper'   => '<div class="breadcrumbs">{items}</div>', 
);

现在,当我添加破折号和 $pageurle 时,dreamweaver 说我做错了什么并显示错误。我一定在这里做一些愚蠢的事情......但是什么?我非常感谢您对此事的想法/代码/改进/可能的深入研究。

【问题讨论】:

  • 'link' =&gt; '&lt;a href="{target}' . " " . $pageurle . '"&gt;{name}&lt;/a&gt;', @pst 之后。它仍然不好...... DW中仍然存在错误:(感谢您的评论+1查看我更新的图片
  • @pst 您应该将其发布为答案
  • @Sam:当您尝试实际运行 PHP 时会说什么?
  • @Phil,但这并不能解开谜团! DW 仍然识别出该行中的错误......虽然我很绝望,但我现在会给出任何建议作为答案,或者不是 +1 投票!
  • @Sam:别再盯着你的编辑器了,试着运行一下吧。

标签: php arrays string debugging


【解决方案1】:

很确定这是因为类属性初始化语句(var 放弃了它)可能只包含常量或文字。

您不能在语句中执行任何程序性操作。

最好在你的构造函数中做这种事情。

编辑

为了说明

class MyClass
{
    public $breadcrumb_templates = array(
        'separator' => '&rarr;',
        'link'      => '<a href="{target}">{name}</a>',
        'wrapper'   => '<div class="breadcrumbs">{items}</div>',         
    );

    public function __construct($pageurle = null)
    {
        if (null !== $pageurle) {
            $this->breadcrumb_templates['link'] =
                sprintf('<a href="{target}-%s">{name}</a>', $pageurle);
        }
    }
}

【讨论】:

  • 另外,var,认真的吗? PHP 4 已死并被埋葬。见鬼,他们甚至停止了 5.2 的开发
  • 应该用什么替换var?谢谢@Phil。
  • @Sam A 属性可见性声明
  • -1 我必须将 +1 变成 -1。我的意思是……为什么要那样做?
  • @Theodore 这只是一个例子来说明; a)您可以在属性初始化语句中使用文字值数组,以及 b)如何在构造函数中操作属性。这也是一个从健全的默认值开始并随着更多参数的加入而添加数据的示例。您认为这个答案“没有用”到底是什么?
【解决方案2】:

首先,“var”最后一次使用是在 PHP 4 中,并且在 PHP 5 中没有任何业务。

第二,类属性不能运行任何代码(比如你的array()中的“.”)。

解决方法如下:

class MyClass
{
    private $breadcrumb_templates;

    public function __construct()
    {
        $this->breadcrumb_templates = array(
            'separator' => '&rarr;',
            'link'      => '<a href="{target}">{name}</a>',
            'wrapper'   => '<div class="breadcrumbs">{items}</div>', 
        );
    }
}

【讨论】:

  • +1 非常感谢@Theodore,那么现在我如何在其中的 {target} 之后添加-@pageurle?或者你会建议@Phil 所说的:专注于构造函数并在那里修复东西?
  • 它们当然可以用数组初始化,只要每个键/值都是常量或文字
  • 这如何回答这个问题?
  • @Phil Brown,除非他改变了答案,否则他需要在对象实例化时将变量附加到数组中。我向他展示了如何做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
相关资源
最近更新 更多