Тема: Клас опитувань
Всім привіт (мене звать Віталюка=))
Викладаю на обговорення клас опитувань. Він поки бета... проте працює.
<?php
 /*
  * Клас опитувань
  * Автор: BoGdAn/ARMYbodya <armybodya@gmail.com>
  * URL: https://weua.info/bogdan
  * Дата: 29 вересня 2014р
  * Оновлення: 4 грудня 2014р
  */
  
class parseString { 
    function array_to_string($arr, $max = 0) { 
        if($max == 1) 
            $str = implode(',', $arr);
        else {
            $count = count($arr);
            foreach($arr as $v) {
                $str .= implode(',' ,$v);
                if(++$i != $count)
                    $str .= '|';
            }
        }
        return $this->string($str);
    }
    function string_to_array($str, $max = 0) {
        $str = $this->string($str);
        if($max == 1) { 
            if(empty($str)) return array();
                $arr = explode(',', $str);
        }
        else {
            $arr = array();
            $v = empty($str) ? array() : explode('|', $str);
            if(!$max) 
                $max = count($v);
            for($i = 0; $i <= ($max-1); ++$i)
                $arr[] = empty($v[$i]) ? array() : explode(',', $v[$i]);
        }
        return $arr;
    }
    
    function  to_flat_array($arr){  
        $out = array();  
        if(!is_array($arr)) 
            return $arr; 
        foreach($arr as $v) { 
            $req = $this->to_flat_array($v);
            if(is_array($req)) 
                $out = array_merge($out, $req);  
            else  
                $out[] = $req;  
        } 
        return $out; 
    } 
    
    function string($str) {
        $arr = array(',,' => ',', ' ' => '', "\n" => '', "\r" => '');
        return strtr($str, $arr);
    }
    
}
  
class Vote extends parseString {
    public $col_vote; 
    public $arr;
    public $string;
    function __construct($str, $col_vote = 1) {
        $this->col_vote = $col_vote;
        $str = $this->string($str);
    $this->arr = $this->string_to_array($str, $this->col_vote);
    }
    function add($id, $cheng = 1) {
        if($this->col_vote == 1) {
            if(in_array($id, $this->arr)) { 
                $arr_flip = array_flip($this->arr);
                unset($arr_flip[$id]);
                $this->arr = array_flip($arr_flip);
            }
            else 
                $this->arr[] = $id;
        return $this->array_to_string($this->arr, 1);
        }
        $arr_p = array();
        foreach($this->arr as $mas) 
            if(in_array($id, $mas)) {
                $noadd = 1;
                $mas_flip = array_flip($mas);
                unset($mas_flip[$id]);
                $mas = array_flip($mas_flip);
                $arr_p[] = $mas; 
            }
            else  
                $arr_p[] = $mas;
        if(!isset($noadd))
            if(!is_array($arr_p[$cheng]))
                $arr_p[$cheng] = array($id);
            else
                $arr_p[$cheng][] = $id;
        return $this->array_to_string($arr_p);
    }
    function view() { 
        if($this->col_vote == 1) 
            return count($this->arr);
        $r_arr = array();
        foreach($this->arr as $mas)
            $r_arr[] = count($mas);
        return $r_arr;
    }
    function in_vote($id) { 
        if($this->col_vote == 1) 
            if(in_array($id, $this->arr))
                return 1;
            else 
                return 0;
        $r_arr = array();
        foreach($this->arr as $mas)
            if(in_array($id, $mas))
                $r_arr[] = 1;
            else 
                $r_arr[] = 0;
        return $r_arr;
    }
    function uslist($cheng = 'all') {
        if($cheng == 'all') 
            return $this->to_flat_array($this->arr);
        if($this->col_vote == 1)
            return $this->arr;
        else 
            return $this->arr[$cheng];
    }
    function __destruct() {
        foreach($this as $key => $value) 
            unset($this->$key); 
    } 
}Приклад і сам клас в прикріпленому файлі.
 Досить важко читати 
 