数组未返回正确的值

时间:2016-08-12 11:21:10

标签: php

我目前正在尝试将文字应用于我的活动组内的活动是否有可用空间或已售罄。

我的循环查看事件组中的每个事件,并返回它们是否已售罄或是否可用于每个特定事件。我的问题是,它只是为两个事件返回相同的值,而不是查看每个特定事件,因此它返回错误的值。

它将这些添加到一个数组并将每个数据中断,但第二个值总是错误的。有什么想法吗?

即使第二个事件达到了它的容量值,它仍显示为可用

public function getAreEventsAvailableStringMultiple() {
    $availability = null;
    foreach ($this->events as $event) {
        $availability[] = $this->getAreEventsAvailable() ? 'Spaces still available' : 'Sold Out';
    }
    return implode(' <br/> ', $availability);
}

其他功能

 public function getAreEventsAvailable() {
        foreach ($this->events as $event) {
            if ($event->getRemainingCapacity() > 0) {
                return true;
            }
        }
        return false;
    }

1 个答案:

答案 0 :(得分:2)

您正在迭代iframe(可能是一个事件对象数组),但检查$this->events的可用性,这意味着当前对象。

如果$this是对象数组,那么你应该这样做:

$this->events

假设您的Event对象具有 foreach ($this->events as $event) { $availability[] = $event->getAreEventsAvailable() ? 'Spaces still available' : 'Sold Out'; } 方法。

如果getAreEventsAvailable()返回所有事件的可用性,则无需$this->getAreEventsAvailable()循环,只需将结果分配给foreach

$availability

编辑: 您的$availability = $this->getAreEventsAvailable(); 应如下所示:

getAreEventsAvailable()

然后在您的public function getAreEventsAvailable() { $availability = []; foreach ($this->events as $event) { if ($event->getRemainingCapacity() > 0) { $availability[] = true; } else { $availability[] = false; } } return $availability; } 函数中:

getAreEventsAvailableStringMultiple()

这不是最优雅的解决方案,但它应该有效。