如何重新设置数字数组键

发布于 2024-11-27 03:04:55 字数 1046 浏览 1 评论 0原文

我有一个数组 $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
        )
)

I have an array $matrix_part, containing arrays, and I want to rekey the inner keys to start at 1.

I am trying to code below but it doesn't work - it just stores the new array identically.

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

Source array:

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
        )
)

Desired output:

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
        )
)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

清君侧 2024-12-04 03:04:55

尝试使用:
而不是这个:

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

这样做:

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

Try use:
instead of this:

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

do this:

 $temp_matrix[++$k] = $v;
离笑几人歌 2024-12-04 03:04:55

这也许?

$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);

This maybe?

$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);
宛菡 2024-12-04 03:04:55
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 是您的输入数组

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;
}

where $a is your input array

葬心 2024-12-04 03:04:55

可以做类似的事情...

    foreach ($matrix as $k=>$v) {
        foreach ($v as $k2=>$v2) {
            $tmp_arr[$k][$k2+1] = $v2;
        }
    }
    $matrix = $tmp_arr;

Could do something like ...

    foreach ($matrix as $k=>$v) {
        foreach ($v as $k2=>$v2) {
            $tmp_arr[$k][$k2+1] = $v2;
        }
    }
    $matrix = $tmp_arr;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文