2011-09-16 156 views
0

我该如何获取从对象方法返回的值并将其放入数组中。代码如下:将值添加到数组

$additionalTestConfirmation = array(); 

$additionalTests = $this->getAdditionalTestsSelected(); 


foreach($additionalTests as $availableTest) 
{ 
    $additionalTestConfirmation = $availableTest->getName(); 

} 

$appointment = $this->getAppointment(); 

$tokens = array(
    '%DATE%' => $this->getAppointment()->getDate(), 
    '%LOCATION%' => $this->getAppointment()->getLocation(), 
    '%TIME%' => $this->getTime(), 
    '%ROOM%' => $this->getRoom(), 
    '%NAME%' => ($this->getUser() ? $this->getUser()->getFullName() : null), 
    '%TZ%' => $this->getAppointment()->getShowTimeZone() ? $this->getAppointment()->getTimeZone() : '', 
    '%AdditionalTestsSelected%' => $additionalTestConfirmation, 
); 

对于以上验证码,我得到了系统错误消息:注意:Array对/用户/ alexhu /的NetBeansProjects /动物园/ SVN /中继/应用/前端/模块串转换/legacy/legacy_lib/lib/classes/AppointmentTime.php on line 379. 如何避免这种情况,并获得我想要的$ availableTest-> getName()返回的值。感谢

+0

什么是379行?你的问题标题与你的问题实际上有什么关系? – hakre

+0

您一直在问关于您现在为期2天所做的每一步的问题。我可以建议你学习PHP,然后在你有明确的问题时回来吗? –

+0

编辑文本编辑器(例如vim,emacs)可以在编辑时显示行号,例如,如果您想知道哪一行是第379行,这非常有用(特别是如果您想要将相关代码片段一个SO问题)。花一些时间用你的文本编辑器构建专业知识,你会让你的程序员更容易生活。 – Peter

回答

0

当分配元件的阵列,则必须指定一个索引,或者使用空的方括号([])添加项目:

foreach($additionalTests as $availableTest) { 
    $additionalTestConfirmation[] = $availableTest->getName(); 
    // or array_push($additionalTestConfirmation, $availableTest->getName()); 
    // see: http://us3.php.net/array_push 
} 

见文档的更多:http://php.net/manual/en/language.types.array.php

EDIT

而且,在这条线:

'%AdditionalTestsSelected%' => $additionalTestConfirmation, 

...你正在向这个索引传递一个数组。如果后缀代码期望这是一个字符串,那可能会导致错误。 * 这不会导致错误 - 将数组放入另一个数组是完全可以接受的。正如我所提到的那样,这实际上取决于使用$tokens数组的代码将执行和期望的内容。如果预计为AdditionalTestsSelected指数纯字符串,则可能需要这样做:

'%AdditionalTestsSelected%' => implode(',', $additionalTestConfirmation) 

...使值以逗号分隔的列表。

另请注意,在该行的结尾处有一个额外的逗号。

+0

感谢您的回复。但我仍然有错误。我认为这是关于'%AdditionalTestsSelected%'=> $ additionalTestConfirmation –

+0

请参阅编辑。 –

+0

非常感谢。我解决了这个问题 –

0
foreach($additionalTests as $availableTest) 
{ 
    $additionalTestConfirmation[] = $availableTest->getName(); 

} 
您的评论后

我建议你:

$appointment = $this->getAppointment(); 

$token = array(
    '%DATE%' => $appointment->getDate(), 
    '%LOCATION%' => $appointment->getLocation(), 
    '%TIME%' => $this->getTime(), 
    '%ROOM%' => $this->getRoom(), 
    '%NAME%' => ($this->getUser() ? $this->getUser()->getFullName() : null), 
    '%TZ%' => $appointment->getShowTimeZone() ? $appointment->getTimeZone() : '' 
); 

$tokens = array(); 

$additionalTests = $this->getAdditionalTestsSelected(); 

foreach($additionalTests as $availableTest) 
{ 
    $token['%AdditionalTestsSelected%'] = $availableTest->getName(); 
    $tokens[] = $token; 
} 

// here comes logic for all tokens 
+0

我仍然收到相同的错误消息。最重要的是将正确的值放入数组$ token中,而不仅仅是从$ availableTest-> getName()中获取值 –

+0

存在逻辑问题。你有几个“availableTest”,但是“令牌”只有一个条目。因此,要么循环“foreach($ additionalTests as ...”)内的完整过程,要么创建一个令牌数组。 – roselan

+0

谢谢,我解决了问题 –

1

为了增加每个$ availableTest->的getName()你需要你的阵列和上使用[]数组$ additionalTestConfirmation赋值运算符=

foreach($additionalTests as $availableTest) 
{ 
    $additionalTestConfirmation[] = $availableTest->getName(); 

} 

您也可以使用该功能array_push

+0

我仍然得到相同的错误消息:在/ Users/alexhu/NetBeansProjects/menagerie/svn/trunk/apps/frontend/modules/legacy /legacy_lib/lib/classes/AppointmentTime.php在线379 –