Location: PHPKode > scripts > loopedArray > loopedarray/loopedArray.inc
<?PHP

/************************************************
*************************************************
**                                             **
**  loopedArray (C) 2000 Robert Peake          **
**  Released under GNU Lesser Public Licesne   **
**                                             **
*************************************************
************************************************/

class loopedArray {

        var $theArray = array();
        var $initialized = false;

// If initialize is given an array, it will use the array
// as the basis for the loopedArray,
// otherwise it will attempt to add what it is given
// to the loopedArray.

        function initialize($initValue) {
                if(is_array($initValue)){
                  $this->theArray = $initValue;
                } else {
                  $this->add($initValue);
                }
        $this->initialized = true;
        }

// add adds the given variable to the end of the array

        function add($addValue) {
                $this->theArray[$this->numelements()] = $addValue;
                reset($this->theArray);
        }

// removeElement removes the first matching element found from the array

        function removeElement($element) {
                return($this->removeIndex($this->indexof($element)));
                reset($this->theArray);
        }

// removeAllElement removes all instances the element from the array
// returns true if at least one instance of the element is found,
// returns false otherwise.

        function removeAllElement($removeValue) {
                $returnValue = false;
                $bufferArray = array();
                for($i=0; $i<sizeof($this->theArray); $i++) {
                        if($this->theArray[$i] != $removeValue) {
                          $bufferArray[] = $this->theArray[$i];
                        } else {
                          $returnValue = true;
                        }
                }
                if($returnValue) {
                  $this->theArray = $bufferArray;
                }
                return $returnValue;
                reset($this->theArray);
        }

// removeIndex removes the element at the given index from the array
// returns true if element exists at index, false otherwise

        function removeIndex($removeIndex) {
                $returnValue = false;
                $bufferArray = array();
                while($removeIndex < 0 && $this->initialized) {
                        $removeIndex += sizeof($this->theArray);
                }
                $modindex = $index % $this->numelements();
                for($i=0; $i<sizeof($this->theArray); $i++) {
                        if($i != $modindex) {
                          $bufferArray[] = $this->theArray[$i];
                        } else {
                          $returnValue = true;
                        }
                }
                if($returnValue) {
                  $this->theArray = $bufferArray;
                }
                return $returnValue;
                reset($this->theArray);
        }

// indexof returns the first index of the given element in the
// loopedArray, false if the element does not exist in the loopedArray.

        function indexof($element) {
                $returnValue = -1;
                for($i=0; $i<sizeof($this->theArray); $i++) {
                        if($this->theArray[$i] == $element) {
                        $returnValue = $i;
                        }
                }               
                return $returnValue;
        }

// numelements returns the number of elements in the loopedArray

        function numelements() {
                return count($this->theArray);
        }

// elementat returns the element at the index of the loopedArray, looping
// such that (n*sizeof(loopedArray) + k) returns the same element as  k
// for all integers k, n. Returns false if loopedArray is empty.
        
        function elementat($index) {
            if($this->numelements() > 0) {
                while($index < 0 && $this->initialized) {
                        $index += sizeof($this->theArray);
                }
                $modindex = $index % $this->numelements();
                return $this->theArray[$modindex];
            }   else { return false; }
        }


// after returns the next element after the given element in the loop
// or false if the element does not exist in the loopedArray

        function after($element) {
                $theIndex = $this->indexof($element);
                return $this->elementat($theIndex + 1);
        }

// before returns the element before the given element in the loop

        function before($element) {
                $theIndex = $this->indexof($element);
                return $this->elementat($theIndex - 1);
        }
        
// printAll outputs all elements in the array, separated by a delimiter

        function printAll($delimiter) {
                for($i=0; $i<sizeof($this->theArray); $i++) {
                  if($this->theArray[$i + 1]) {
                    echo($this->theArray[$i].$delimiter);
                  } else {
                    echo($this->theArray[$i]);
                  }
                }
        reset($this->theArray);
        }

}

?>
Return current item: loopedArray