Как изменить значения массива с последней на третью позицию? - PullRequest
0 голосов
/ 21 февраля 2019

Есть ли возможное изменение в позиции массива?

у меня есть массив, подобный

  [files] => Array
    (
        [name] => Array
            (
                [0] => file 1
                [1] => file 2
                [2] => file 3
            )

        [size] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
            )

        [error] => Array
            (
                [0] => abc
                [1] => def
                [2] => ghi
            )
       [position] => Array
            (
                [0] => left
                [1] => right
                [2] => center
            )
      [details] => Array
            (
                [0] => detail1
                [1] => detail2
                [2] => detail3
            )
    )

Я хочу, чтобы значение массива "Подробности" было перемещено на 3-ю позицию рядом с размером до ошибки до ошибки,Можно через PHP ??

1 Ответ

0 голосов
/ 21 февраля 2019

Да, возможно, было время, когда я предпочитал использовать что-то подобное.Посмотрите на функцию ниже, это будет делать то, что вы хотите:

/** Easily append anywhere in associative arrays
 * @param array      $arr          Array to insert new values to
 * @param string|int $index        Index to insert new values before or after
 * @param array      $value        New values to insert into the array
 * @param boolean    $afterKey     Insert new values after the $index key
 * @param boolean    $appendOnFail If key is not present, append $value to tail of the array
 * @return array
 */
function arrayInsert($arr, $index, $value, $afterKey = true, $appendOnFail = false) {
    if(!isset($arr[$index])) {
        if($appendOnFail) {
            return $arr + $value;
        } else {
            echo "arrayInsert warning: index `{$index}` does not exist in array.";
            return $arr;
        }
    } else {
        $index = array_search($index, array_keys($arr)) + intval($afterKey);
        $head = array_splice($arr, $index);
        return $arr + $value + $head;
    }
}

Пример результата:

>>> $test = ['name'=>[], 'size'=>[], 'error'=>[], 'position'=>[], 'details'=>[]];
=> [
     "name" => [],
     "size" => [],
     "error" => [],
     "position" => [],
     "details" => [],
   ]
>>> arrayInsert($test, 'size', ['details'=>$test['details']]);
=> [
     "name" => [],
     "size" => [],
     "details" => [],
     "error" => [],
     "position" => [],
   ] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...