php - 数组排序算法

标签 php arrays algorithm sorting

我有一个多维数组,结构是这样的:

$arr1 = array(
0 => array(
    'name' => 'Jim',
    'awards' => array(
        0 => 'awards one',
        1 => 'awards two',
        2 => 'awards three',
        3 => 'awards four',
        4 => 'awards five',
        5 => 'awards six',
    ),
),
1 => array(
    'name' => 'Kate',
    'awards' => array(
        0 => 'awards one',
        1 => 'awards two',
        2 => 'awards three',
    ),
));

如果其中一个元素的'awards'数大于4,它将成为一个新元素,并在第五个之后包含'awards'元素。像这样:

$arr2 = array(
0 => array(
    'name' => 'Jim',
    'awards' => array(
        0 => 'awards one',
        1 => 'awards two',
        2 => 'awards three',
        3 => 'awards four',
    ),
),
1 => array(
    'name' => 'Jim',
    'awards' => array(
        0 => 'awards five',
        1 => 'awards six',
    ),
),
2 => array(
    'name' => 'Kate',
    'awards' => array(
        0 => 'awards one',
        1 => 'awards two',
        2 => 'awards three',
    ),
));

我不擅长算法。我到处寻找,但找不到解决方案。有人能帮我吗。提前致谢!

最佳答案

<?php
$arr1 = array(
    array(
        'name' => 'Jim',
        'awards' => array(
            0 => 'awards one',
            1 => 'awards two',
            2 => 'awards three',
            3 => 'awards four',
            4 => 'awards five',
            5 => 'awards six',
        ),
    ),
    array(
        'name' => 'Kate',
        'awards' => array(
            0 => 'awards one',
            1 => 'awards two',
            2 => 'awards three',
        ),
));

$result = array();
foreach( $arr1 as $player ) {
    while ( count($player['awards']) > 0 ) {
        $result[] = array(
            'name' => $player['name'],
            'awards' => array_splice($player['awards'], 0, 4)
        );
    }
}
var_export($result);

打印

array (
  0 => 
  array (
    'name' => 'Jim',
    'awards' => 
    array (
      0 => 'awards one',
      1 => 'awards two',
      2 => 'awards three',
      3 => 'awards four',
    ),
  ),
  1 => 
  array (
    'name' => 'Jim',
    'awards' => 
    array (
      0 => 'awards five',
      1 => 'awards six',
    ),
  ),
  2 => 
  array (
    'name' => 'Kate',
    'awards' => 
    array (
      0 => 'awards one',
      1 => 'awards two',
      2 => 'awards three',
    ),
  ),
)

关于php - 数组排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35930935/

相关文章:

c - 我的 returnList[0] 被重写为 @5'

java - 在java中使用数组和数组列表的按键监听器的双击功能将所有内容都计为双击

algorithm - 给定一个函数 rand7(),编写一个函数 rand10() 统一

PHP 从查询结果中截断文本

php - apache mod_rewrite url 问题

javascript - 从 API 响应迭代嵌套的 Javascript 对象

algorithm - 查找图中两个节点之间分离度的有效方法

javascript - 使用 RSA 解密字符串

PHP $_GET 文件无法从 mysql 数据库检索数据

php - 如何将变量插入此 oci_parse 语句