示例#1
0
 public function insert($value, $key)
 {
     if ($value instanceof HArray) {
         $value = $value->toArray();
     }
     if ($value instanceof HString) {
         $value = $value->toString();
     }
     if (Helper::canBeInArray($value)) {
         $valueArray = $value;
     } else {
         $valueArray = [$value];
     }
     if (isset($key)) {
         if (is_numeric($key)) {
             list($array, $length) = $this->setSubarrayAndLengthForSequentialArray($key, $valueArray);
         } elseif (is_string($key)) {
             list($array, $length) = $this->setSubarrayAndLengthForAssociativeArray($key, $valueArray);
         } else {
             throw new \InvalidArgumentException("Invalid array key");
         }
     } else {
         list($array, $length) = $this->setSubarrayAndLengthWhenNoKeyProvided($valueArray);
     }
     $first = $this->arr->slice(0, $length)->toArray();
     $lastStartingPoint = sizeof($this->arr) - sizeof($first);
     $last = $this->arr->slice($length, $lastStartingPoint)->toArray();
     return new HArray(array_merge_recursive($first, (array) $array, $last));
 }