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));
 }