Prado\Collections\TPriorityList::mergeWith PHP Метод

mergeWith() публичный Метод

New data will be appended to the end of the existing data. If another TPriorityList is merged, the incoming parameter items will be appended at the priorities they are present. These items will be added to the end of the existing items with equal priorities, if there are any.
public mergeWith ( $data )
    public function mergeWith($data)
    {
        if ($data instanceof TPriorityList) {
            foreach ($data->getPriorities() as $priority) {
                foreach ($data->itemsAtPriority($priority) as $index => $item) {
                    $this->insertAtIndexInPriority($item, false, $priority);
                }
            }
        } else {
            if (is_array($data) || $data instanceof \Traversable) {
                foreach ($data as $priority => $item) {
                    $this->add($item);
                }
            } else {
                if ($data !== null) {
                    throw new TInvalidDataTypeException('map_data_not_iterable');
                }
            }
        }
    }

Usage Example

Пример #1
0
 public function testMergeWithTPriorityList()
 {
     $plist = new TPriorityList(array($this->item3, $this->item1));
     $plist->mergeWith($this->plist);
     $this->assertEquals(6, $plist->getCount());
     $this->assertEquals(0, $plist->indexOf($this->pfirst));
     $this->assertEquals(1, $plist->indexOf($this->item3));
     $this->assertEquals(2, $plist->indexOf($this->item1));
     $this->assertEquals(3, $plist->indexOf($this->pitem1));
     $this->assertEquals(4, $plist->indexOf($this->pitem2));
     $this->assertEquals(5, $plist->indexOf($this->pitem3));
     $this->assertEquals(-10000000, $plist->priorityOf($this->pfirst));
     $this->assertEquals(10, $plist->priorityOf($this->item3));
     $this->assertEquals(10, $plist->priorityOf($this->item1));
     $this->assertEquals(10, $plist->priorityOf($this->pitem1));
     $this->assertEquals(10, $plist->priorityOf($this->pitem2));
     $this->assertEquals(100, $plist->priorityOf($this->pitem3));
     $this->assertEquals(-1, $plist->indexOf($this->pitem4));
 }