Строковые имена в массиве

497
.
ДоХтор
# dilp (13.06.2017 / 09:43)
Тогда со временем будет целый списочек этих проверок
Их будет ровно столько, сколько будет обращений.
.
(\/)____o_O____(\/)
http://php.net/manual/ru/class ... s.php
.
Ей 25
# dilp (13.06.2017 / 09:43)
Тогда со временем будет целый списочек этих проверок
Напиши геттер функцию, которая будет проверять наличие элемента в массиве и отдавать тебе его.
.
Hey guys! Finally I'm gonna change status!?
# Koenig (13.06.2017 / 11:45)
http://php.net/manual/ru/class ... s.php
Как раз там самый первый пример в юзерпримечаниях решает эту заморочку, только это называется пихать руку в ящик со змеями, или без них, как повезет
.
(\/)____o_O____(\/)
kantry, его можно использовать как массив. смотри конструктор, ты про тот пример где магия?
.
Hey guys! Finally I'm gonna change status!?
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 и дальше работай с ним.
Всего: 30