【问题标题】:Rearrange array in php在php中重新排列数组
【发布时间】:2023-03-27 02:33:01
【问题描述】:

我有一个问题,例如,具有 0 10 个索引的数组,我删除了第 0 个索引,现在它就像 1 到 10 当我显示这个数组时,第 0 个位置有一个空列。我想将此数组重新排列为 0 到 9。 目的是数组构造我的网格,第 0 个位置用于编辑,如果用户没有权限,那么我取消设置第 0 个元素。 我如何将我的数组重新排列为 0 到 9

示例数组结构如下

[fields] => Array
    (
        [1] => Array
            (
                [header] => Array
                    (
                        [fieldName] => OFFERID
                        [displayName] => History
                        [width] => 70
                    )

                [visibility] => Array
                    (
                        [showOnStart] => 1
                        [editable] => 
                    )

                [cell] => Array
                    (
                        [type] => raw
                        [params] => Array
                            (
                                [text] => <a href="javascript:void(0);" id="{{OFFERID}}" class="btnHistory">History</a>
                            )

                    )

                [sort] => Array
                    (
                        [sortable] => 1
                    )

                [validator] => Array
                    (
                        [name] => 
                        [params] => 
                    )

            )

        [2] => Array
            (
                [header] => Array
                    (
                        [fieldName] => OFFERID
                        [displayName] => Offer Id
                        [group] => 0
                    )

谢谢 亚历克斯

【问题讨论】:

  • 如何从数组中删除值?
  • 你是如何遍历数组并显示它的?
  • 使用array_shift 删除第一个值,数字将在您使用数字键时重新索引。

标签: php arrays


【解决方案1】:

有几种方法可以做到这一点,这里有两个最短的方法 (array_values()/array_merge()):

$array = array_values($array);
// or
$array = array_merge($array);

但您可能会考虑使用array_shift()/array_pop()/array_splice() 从数组中删除项目,而不是(可能)unset()ing 它 - 这些会自动将所有键转换为连续的 0 -索引顺序。

【讨论】:

  • 有时编辑可能会出现在另一个位置,目前它是第 0 个位置,所以只有 unset 适合我。
  • @user1390436 实际上array_splice() 将允许您从数组中的第 n 个位置删除元素,并在一次操作中重新排序键 - 我已经编辑了我的答案。
  • 这正是我最初的建议:)
  • @DvirAzulay 确实如此,而且你有我的 +1 :-)
【解决方案2】:

您可以使用array_splice 删除数组的一部分。

array array_splice ( array &amp;$input , int $offset [, int $length = 0 [, mixed $replacement ]] )

例如:

$array = array(0 => "a", 1 => "b", 2 => "c");
array_splice($array, 0, 1);
var_dump($array);

将输出:

array(2) {
  [0]=> string(1) "b"
  [1]=> string(1) "c"
}

请注意,它会按照您的要求重新索引您的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2015-04-03
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多