допустим существует класс
допустим мы создали такой обьектик
подкрутили
с этого момента можно искать по любому ключу
это удобно во вьюшке, то такой, то такой масcив выпрашивать!
своего рода индекс таблицы
существует ли подобная структура данных или алгоритм и как это завется?
PHP:
class Model{
protected $data;
protected $map;
public function set( $data ){
$this->data = $data;
}
public function prepare( $v ){
foreach($this->data as $idx => $val){
foreach( $v as $operation => $keys ){
foreach( $keys as $key ){
switch($operation){
case 'unique' :
$this->map[ $key ][ $val[ $key ] ] = &$this->data[$idx];
break;
case 'group' :
$this->map[ $key ][ $val[ $key ] ][ $idx ] = &$this->data[$idx];
break;
}
}
}
}
}
public function get( $where ){
if( is_array($where) ) return $this->map[ key($where) ][ current($where) ];
else return array_keys( $this->map[ $where ]);
}
}
PHP:
$s = new Model;
$s->set( array(
array('id' => 'a', 'type' => 1, 'value' => 'mama' ),
array('id' => 'b', 'type' => 2, 'value' => 'mama' ),
array('id' => 'c', 'type' => 1, 'value' => 'papa' )
) );
PHP:
$s->prepare( array(
'unique' => array('id','value'),
'group' => array('type')
));
это удобно во вьюшке, то такой, то такой масcив выпрашивать!
PHP:
print_r($s->get( array('id' => 'a') ));
print_r($s->get( array('value' => 'mama') ));
print_r($s->get( 'id' ));
print_r($s->get( 'value' ));
foreach($s->get( 'type' ) as $type){
echo $type ."\n";
print_r( $s->get( array('type'=>$type ) ));
}
существует ли подобная структура данных или алгоритм и как это завется?
Последнее редактирование: