Тема: Клас опитувань
Всім привіт (мене звать Віталюка=))
Викладаю на обговорення клас опитувань. Він поки бета... проте працює.
<?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);
}
}
Приклад і сам клас в прикріпленому файлі.