php - 多维数组的排序和分解

标签 php arrays multidimensional-array

所以我有一个以下形式的多维数组(实际数组可以更长,有 500+ 个成员)

$marr = array( array("s_id" => 1, 1.25 , 15),
               array("s_id" => 2, 0.75 , 25),
               array("s_id" => 1, 1.15 , 7) 
             ); 

我试图将其分解为一个由成员数组的 s_id 值分组/索引的数组

$sarr        = array(
                    1 => array(
                                 array("s_id" => 1, 1.25 , 15),
                                 array("s_id" => 1, 1.15 , 7) 
                                 ),
                    2 => array(
                                 array("s_id" => 2, 0.75 , 25)
                                 )
                    );

php 中是否有内置函数可以执行此操作或执行此操作的一些最佳实践方法?

最佳答案

没有内置函数可以提供此结果。相反,您需要迭代该数组,并检查与 s_id 值匹配的键是否已存在。如果它没有在该键处创建新数组。

$marr = array( array("s_id" => 1, 1.25 , 15),
               array("s_id" => 2, 0.75 , 25),
               array("s_id" => 1, 1.15 , 7) 
             ); 

// Holds the whole output
$output = array();

// Looping over the original array
foreach ($marr as $subarr) {
  // Check if the output array already has the s_id as a key
  if (!isset($output[$subarr['s_id']])) {
    // Initialize it
    $output[$subarr['s_id']] = array();
  }
  // Then append the current sub-array to the s_id array key
  $output[$subarr['s_id']][] = $subarr;
}
// Then call ksort() on the output array
// to sort the s_id keys in ascending order
ksort($output);

http://codepad.viper-7.com/SSBrAl

打印:

Array
(
    [1] => Array
        (
            [0] => Array
                (
                    [s_id] => 1
                    [0] => 1.25
                    [1] => 15
                )

            [1] => Array
                (
                    [s_id] => 1
                    [0] => 1.15
                    [1] => 7
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [s_id] => 2
                    [0] => 0.75
                    [1] => 25
                )

        )

)

关于php - 多维数组的排序和分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15188278/

相关文章:

arrays - 如何在 Swift 中找到二维数组中所有元素的总和?

php - 使用 PHP session 连接到 MySQL

javascript - 提交前的 Ajax 验证

php - 我的 CSS 文件在我的 PHP 文件中不起作用

javascript - 合并关联数组,获取最新的,并删除重复的 id

algorithm - 如何找到二维数组中的最大圆

php - jQuery AJAX PHP JSON 问题

JAVA数组输出

jquery - 将数组传递给 $.ajax() 中的 ajax 请求

java - 如何判断数组中的某个项是否也是数组?