Есть массив максимальное количество элементов которого равно пяти. При добавлении элемента нужно определить какой индекс null, и туда добавить новый элемент Удаление элементов происходит по индексу Если все значения не null(заняты), тогда ничего добавлять не нужно Но если элемент удалился (стал null) то этот индекс можно занять при вызове add Использование циклов и дополнительных массивов/объектов/файлов запрещено Вот базовая реализация. Помогите решить задачу расширив данную реализацию Код (Text): class Arr { private $arr = [null,null,null,null,null]; private $index = 0; public function add($element) { if ($this->index == count($this->arr)) { return false; } $this->arr[$this->index] = $element; $this->index++; return true; } public function del($index) { if (isset($this->arr[$index])) { $this->arr[$index] = null; return true; } return false; } public function get($index) { if (isset($this->arr[$index])) { return $this->arr[$index]; } return false; } } $arr = new Arr(); $arr->add(1); $arr->add(2); $arr->add(3); $arr->add(4); $arr->add(5);
Код (Text): public function update($val) { for($i=0; $i<5; $i++){ if(is_null($this->arr[$i])){ $this->arr[$i] = $val; break; } } }
Спасибо. Но array_search тоже подразумевает проход по массиву, только это скрыто от нас --- Добавлено --- Все что есть для использования это переменные и различные операторы
@pircul, используйте рекурсию... если, конечно, это тоже не посчитают скрытым циклом )) PHP: public function add($element) { if ($this->index == count($this->arr)) { return false; } if(!is_null($this->arr[$this->index])) { $this->index++; return $this->add($element); } $this->arr[$this->index] = $element; return true; }
Не говнокодим PHP: <?php class Arr extends ArrayObject { public function offsetSet($offset, $value) { if (count($this) > 4) { return; } if (is_null($offset)) { parent::offsetSet($offset, $value); } else { parent::offsetSet($offset, $value);; } } } $a = new Arr; $a[] = 'A'; $a[] = 'B'; $a[] = 'C'; $a[] = 'D'; $a[] = 'E'; $a[] = 'F'; print_r($a); unset($a[1]); $a[] = 'F'; print_r($a); Код (Text): Arr Object ( [storage:ArrayObject:private] => Array ( [0] => A [1] => B [2] => C [3] => D [4] => E ) ) Arr Object ( [storage:ArrayObject:private] => Array ( [0] => A [2] => C [3] => D [4] => E [5] => F ) )