1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

PHP Array Class

Discussion in 'PHP' started by pein87, Jan 28, 2013.

  1. pein87

    pein87 New Member

    Joined:
    Aug 6, 2010
    Messages:
    173
    Likes Received:
    47
    Trophy Points:
    0
    Occupation:
    Web Dev
    Location:
    Limbo
    This class is a wrapper for array's that allows you to use oop to create and manage an array

    Background



    This class is inspired by Java and C#'s array class.

    The Code



    If you'd like to use oop to manage an array this class is meant to provide a data type of sorts for that effort.


    PHP:
    <?php

    class Table
    {
        private 
    $type$table$DEFAULT_KEY;
        
        public function 
    __construct($val "number")
        {
            
    $this->table = array();
            
    $this->DEFAULT_KEY "item";
            
            
    $val strtolower($val);
            
            switch(
    $val)
            {
                case 
    "number":
                    
    $this->type "number";
                break;
                
                case 
    "mixed":
                    
    $this->type "mixed";
                break;
                
                default:
                    
    $this->type "number";
                break;
            }
        }
        
        public function 
    add($val$key null)
        {
            if(
    $this->type == "number")
            {
                
    $this->table[] = $val;
            }
            else
            {
                if(!empty(
    $key))
                {
                    
    $this->table[$key] = $val;
                }
                else
                {
                    
    $randNum mt_rand(1,1000000000);
                    
    $nKey $this->DEFAULT_KEY $randNum;
                    
                    if(!
    array_key_exists($nKey$this->table))
                    {
                        
    $this->table[$nKey] = $val;
                    }
                    else
                    {
                        while(
    array_key_exists($nKey$this->table))
                        {
                            
    $randNum mt_rand(1,1000000000);
                            
    $nKey $this->DEFAULT_KEY $randNum;    
                            
                            if(!
    array_key_exists($nKey$this->table))
                            {
                                
    $this->table[$nKey] = $val;
                                break;
                            }
                        }
                    }
                }
            }
        }
        
        public function 
    remove($val)
        {
            
    $k count($this->table);
            
    $i 0;
            if(
    $k 0)
            {
                if(
    $this->type == "number")
                {
                    for(
    $i 0$i $k$i++)
                    {
                        if(
    $this->table[$i] == $val)
                        {
                            unset(
    $this->table[i]);
                            
                            
    $this->table array_values($this->table);
                            
                            break;
                        }
                    }
                }
                else
                {
                    foreach(
    $this->table as $key => $value)
                    {
                        if(
    $this->table[$key] == $val)
                        {
                            unset(
    $this->table[$key]);
                            
                            
    $this->table array_values($this->table);
                            
                            break;
                        }
                    }
                }
            }
        }
        
        public function 
    compress($sep ", ")
        {
            
    $rtn;
            
            if(!empty(
    $this->table))
            {
                
    $rtn implode($sep,$this->table);
            }
            else
            {
                
    $rtn "";
            }
            
            return 
    $rtn;
        }
        public function 
    addFromText($txt,$sep ", ")
        {
            if(!empty(
    $txt))
            {
                if(empty(
    $sep))
                {
                    
    $sep ", ";
                }
                
                
    $tmp explode($sep$txt);
                
                
    $k count($tmp);
                
    $i 0;
                
                if(
    $this->type == "number")
                {
                    if(
    $k 0)
                    {
                        for(
    $i 0$i $k$i++)
                        {
                            
    $this->table[] = $tmp[$i];
                        }
                    }
                }
            }
        }
        
        public function 
    type()
        {
            return 
    $this->type;
        }
        
        public function 
    number()
        {
            return ((
    $this->type == "number") ? true false);
        }
        
        public function 
    associative()
        {
            return ((
    $this->type == "mixed") ? true false);
        }
        
        public function 
    keys()
        {
            
    $tmp;
            
    $rtn;
            
    $sep ", ";
            
    $k count($this->table);
            
            if(
    $k 0)
            {
                
    $tmp array_keys($this->table);    
                
    $rtn implode($sep$tmp);
            }
            else
            {
                
    $rtn "";
            }
            
            return 
    $rtn;
        }
        
        public function 
    setDefaultKey($val)
        {
            if(!empty(
    $val))
            {
                
    $this->DEFAULT_KEY $val;
            }
        }
        
        public function 
    defaultKey()
        {
            return 
    $this->DEFAULT_KEY;
        }
        
        public function 
    order($rev false)
        {
            if(!
    $rev)
            {
                if(
    $this->number())
                {
                    
    sort($this->table);
                }
                else
                {
                    
    ksort($this->table);
                }
            }
            else
            {
                if(
    $this->number())
                {
                    
    rsort($this->table);
                }
                else
                {
                    
    krsort($this->table);
                }
            }
        }
        
        public function 
    values()
        {
            return 
    $this->table;
        }
    }

    ?>

    References



    Java and C#
     
    ManzZup likes this.

Share This Page