Как переопределить ключи числового массива - PullRequest
1 голос
/ 27 июля 2011

У меня есть массив $matrix_part, содержащий массивы, и я хочу перекомпоновать внутренние ключи, чтобы начать с 1.

Я пытаюсь кодировать ниже, но это не работает - он просто хранитновый массив идентично.

$temp_matrix = array();
foreach ($matrix_part as $k => $v){
$temp_matrix[$k++] = $v;
}
$matrix_part = $temp_matrix;

Исходный массив:

Array
(
    [0] => Array
        (
            [0] => 163
            [1] => 23
            [2] => 97
        )
    [1] => Array
        (
            [0] => 163
            [1] => 23
            [2] => 97
        )
    [2] => Array
        (
            [0] => 163
            [1] => 23
            [2] => 97
        )
)

Желаемый вывод:

Array
(
    [0] => Array
        (
            [1] => 163
            [2] => 23
            [3] => 97
        )
    [1] => Array
        (
            [1] => 163
            [2] => 23
            [3] => 97
        )
    [2] => Array
        (
            [1] => 163
            [1] => 23
            [3] => 97
        )
)

Ответы [ 4 ]

2 голосов
/ 27 июля 2011

Это может быть?

$input = array(
    array(163, 23, 97),
    array(163, 23, 97),
    array(163, 23, 97),
);

$output = array_map(function ($innerArray) {
    return array_combine(range(1, sizeof($innerArray)), $innerArray);
}, $input);

print_r($output);
2 голосов
/ 27 июля 2011

Попробуйте использовать: вместо этого:

  $temp_matrix[$k++] = $v;

сделать это:

 $temp_matrix[++$k] = $v;
1 голос
/ 27 июля 2011
foreach ($a as $outer_k => $outer_v) {
    for ($i = count($outer_v) - 1; $i >= 0; $i--) {
        $outer_v[$i+1] = $outer_v[$i];
    }
    unset($outer_v[0]);
    $a[$outer_k] = $outer_v;
}

где $ a - ваш входной массив

1 голос
/ 27 июля 2011

Может сделать что-то вроде ...

    foreach ($matrix as $k=>$v) {
        foreach ($v as $k2=>$v2) {
            $tmp_arr[$k][$k2+1] = $v2;
        }
    }
    $matrix = $tmp_arr;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...