Что-то я давненько ничего не пейсал.
Клас голосовань, ну там лайков дизлайков и прочей хрени. Пример в следующем посте.
<?php
/*
* Клас голосовань
* Автор: BoGdAn/ARMYbodya <armybodya@gmail.com>
* Дата: 29 вересня 2014р
* Написаний за допомогою мобільного телефону. Вибачте, без табуляції.
*/
class Vote {
var $col_vote_in_string;
function __construct($col_vote = 1) {
$this->col_vote_in_string = $col_vote;
}
function add($id, $str, $cheng = 1) {
$arr = $this->string_to_array($str);
if($this->col_vote_in_string == 1) {
if(in_array($id, $arr)) {
$arr_flip = array_flip($arr);
unset($arr_flip[$id]);
$arr = array_flip($arr_flip);
}
else
$arr[] = $id;
return $this->array_to_string($arr);
}
$arr_p = array();
foreach($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))
$arr_p[$cheng] = empty($arr_p[$cheng]) ? array($id) : $id;
return $this->array_to_string($arr_p);
}
function view($str) {
$arr = $this->string_to_array($str);
if($this->col_vote_in_string == 1)
return count($arr);
$r_arr = array();
foreach($arr as $mas)
$r_arr[] = count($mas);
return $r_arr;
}
function in_vote($id, $str) {
$arr = $this->string_to_array($str);
if($this->col_vote_in_string == 1)
if(in_array($id, $arr))
return 1;
else
return 0;
$r_arr = array();
foreach($arr as $mas)
if(in_array($id, $mas))
$r_arr[] = 1;
else
$r_arr[] = 0;
return $r_arr;
}
function uslist($str, $cheng = 1) {
$arr = $this->string_to_array($str);
if($this->col_vote_in_string == 1)
return $arr;
else
return $arr[$cheng];
}
function array_to_string($arr) {
if($this->col_vote_in_string == 1)
return implode(',', $arr);
$str = '';
$count = count($arr);
$i = 0;
foreach($arr as $v) {
$str .= implode(',' ,$v);
if(++$i != $count)
$str .= '|';
}
return $this->string($str);
}
function string_to_array($string) {
$string = $this->string($string);
if($this->col_vote_in_string === 1) {
if(empty($string)) return array();
return explode(',', $string);
}
$arr = array();
$v = $string ? explode('|', $string) : array();
for($i = 0; $i <= ($this->col_vote_in_string-1); ++$i)
$arr[] = !empty($v[$i]) ? explode(',', $v[$i]) : array();
return $arr;
}
function string($string) {
$arr = array(',,' => '', ' ' => '', "\n" => '', "\r" => '');
if($this->col_vote_in_string == 1)
$arr['|'] = '';
return strtr($string, $arr);
}
}