# dilp (13.06.2017 / 09:43)
Тогда со временем будет целый списочек этих проверок
Их будет ровно столько, сколько будет обращений.
# dilp (13.06.2017 / 09:43)
Тогда со временем будет целый списочек этих проверок
Напиши геттер функцию, которая будет проверять наличие элемента в массиве и отдавать тебе его.
# Koenig (13.06.2017 / 11:45)
http://php.net/manual/ru/class ... s.php
Как раз там самый первый пример в юзерпримечаниях решает эту заморочку, только это называется пихать руку в ящик со змеями, или без них, как повезет
kantry, его можно использовать как массив. смотри конструктор, ты про тот пример где магия?
Koenig, Я про то, что бы без проверки использовать что нибудь, чего еще нет)))
Как то так, не?
class CustomArray implements ArrayAccess
{
protected $data = [];
public function __construct(array $data)
{
$this->data = $data;
}
public function offsetSet($offset, $value)
{
if (is_null($offset)) {
$this->data[] = $value;
} else {
$this->data[$offset] = $value;
}
}
public function offsetExists($offset)
{
return isset($this->data[$offset]);
}
public function offsetUnset($offset)
{
unset($this->data[$offset]);
}
public function offsetGet($offset)
{
return isset($this->data[$offset]) ? $this->data[$offset] : 0;
}
}
$m = new CustomArray(['alfa' => 123, 'beta' => 234]);
var_dump($m['alfa']); //=> 123
var_dump($m['beta']); //=> 234
var_dump($m['gamma']); //=> 0
$m['gamma'] = 345;
var_dump($m['gamma']); //=> 345
# L!MP (13.06.2017 / 16:12)
Как то так, не?
Не "как то" а именно самое верное решение.
В рамках array access, или ArrayObject мы можем реализовывать СВОЕ поведение массивов, так, как нам нужно. Обычно это касается отсутствующих элементов, или определенной обработке имеющихся
У меня там такой быдлокод
$e='alfa=5/beta=7/delta=1';
$m=array();
$u=explode("/",$e);
for ($k=0;$k<count($u);$k++)
{
$k1=$u[$k];
if ($k1 !="")
{
$y=explode("=",$k1);
$a1=trim($y[0]);
$a1=preg_replace('/[^a-z0-9]/','',$a1);
$m[$a1]=intval($y[1]);
}
}
как мне совместить оба кода?
dilp, ну это у тебя код формирования массива $m. Просто потом, когда он сформирован, передавай его в CustomArray и дальше работай с ним.