重新排序数组的PHP函数

标签 php arrays

这是来自 paypal.com 的所有外部 JS 文件的示例数组:

Array
(
    [src] => Array
        (
            [1] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/lib/min/global.js
            [2] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/tns/mid.js
            [8] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/opinionlab/oo_engine.js
            [11] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/iconix.js
            [12] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/pageBlockingUnsafeBrowsers.js
            [13] => https://www.paypalobjects.com/js/tns/min/bid.js
            [15] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/pp_naturalsearch.js
            [17] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/site_catalyst/pp_jscode_080706.js
        )

    [size] => Array
        (
            [1] => 0.273
            [2] => 0.266
            [8] => 0.279
            [11] => 0.265
            [12] => 0.285
            [13] => 0.248
            [15] => 0.275
            [17] => 0.289
        )

)

是否有 PHP 的内置函数,或可以将此数组重新排序的自定义函数(也不会对性能造成重大影响):

Array
(
    [src] => Array
        (
            [1] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/lib/min/global.js
            [2] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/tns/mid.js
            [3] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/opinionlab/oo_engine.js
            [4] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/iconix.js
            [5] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/pageBlockingUnsafeBrowsers.js
            [6] => https://www.paypalobjects.com/js/tns/min/bid.js
            [7] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/pp_naturalsearch.js
            [8] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/site_catalyst/pp_jscode_080706.js
        )

    [size] => Array
        (
            [1] => 0.273
            [2] => 0.266
            [3] => 0.279
            [4] => 0.265
            [5] => 0.285
            [6] => 0.248
            [7] => 0.275
            [8] => 0.289
        )

)

最佳答案

这个函数应该可以工作,而且尽可能简单。

function reindex_array($src) {
    $dest = array();

    foreach ($array as $key => $value) {
        if (is_array($value)) {
           foreach ($value as $dest_val) {
               $dest[$key][] = $dest_val;
           }
        }
    }

    return $dest;
}

按照 Henrik's answer 中的建议使用 array_values()

function reindex_array($src) {
    $dest = array();

    foreach ($array as $key => $value) {
        if (is_array($value)) {
           $dest[$key] = array_values($value);
        }
    }

    return $dest;
}

这将使数组索引从 0 开始。如果你想要基于 1 的索引,那么使用这个:

function reindex_array($src) {
    $dest = array();

    foreach ($array as $key => $value) {
        if (is_array($value)) {
           $count = 1;

           foreach ($value as $dest_val) {
               $dest[$key][$count] = $dest_val;
               $count++;
           }
        }
    }

    return $dest;
}

关于重新排序数组的PHP函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1316916/

相关文章:

php - SQL JOIN 问题不从查询中返回用户详细信息并将它们打印在数组中

java - 使用 Java 客户端应用程序将条目添加到 mysql 数据库中

php - 删除该字符串末尾的逗号吗?

arrays - 如何基于2D索引和1D值向量替换Numpy 3D数组中沿z轴的值

java - Java 将整数转换为十六进制

python - Numpy 获取二维数组中重复元素的确切参数

php - 从 Symfony 2.6 升级到 2.7 : In a ChoiceType, "choices_as_values"有什么作用?

php - 拆分此 sql 查询,以便它可以像在工作台上一样在 php 上运行

c++ - 如何使用后序遍历打印排序数组?

java - 将数组转换为更小的数组