PHP数组值替换(或替代方案)

3
我正在处理一个系统,从外部来源获取信息并对数据进行一些处理。我已经使用JavaScript完成了客户端所需的数据处理功能。接下来我想将信息存储在数据库中,但是我想仅在PHP(或其他服务器端方式)中进行处理。目前困扰我的是数组替换问题。
我现在存储在数组中的是玩家ID、时间、名称和自行车。我正在获取的数据将自行车分为2个类别(2冲程和4冲程),因此我必须逐个获取每组数据。数组“rec450”包含了4冲程级别的相关信息。在这里,我想比较给定用户的2冲程级别,并查看是否在2冲程级别上时间更短。如果是,我希望用2冲程数组中的新信息替换“rec450”数组中的数据。因此,我想要实现以下功能:
if(class1[‘time’] < class2[‘time’]){   
  replace class1 info with the class2 info;    
}

这是我目前正在使用的PHP代码:

//Pushing the data I want from the fetched array to a new array. This array is no longer associative.
foreach ($rr450f as $key => $value) {
    $tmpArr = array(
        "name" => $value['name'],
        "time" => $value['time'],
        "bike" => $value['bike'],
        "uid" => $value['uid']
    );
    array_push($rec450, $tmpArr);
}

这是我尝试更改rec450数组值的方法:

foreach($rr250 as $key => $value){

    foreach ($rec450 as $k => $v) {
        if($value['uid'] == $v['uid']){

            $k['time'] = $value['time'];
            $k['bike'] = $value['bike'];
            $k['name'] = $value['name'];
            $k['uid'] = $value['uid'];

        }
    }
}

以下是我使用的 rec450 数组(结构)的 print_r:

print_r(rec450):

Array(
[0] => Array
    (
        [name] => Player One
        [time] => 17068
        [bike] => rmz450(2013)
        [uid] => 90970
    )

[1] => Array
    (
        [name] => Player Two
        [time] => 8959
        [bike] => 450sxf(2016)
        [uid] => 76800
    )

[2] => Array
    (
        [name] => Player Three
        [time] => 8300
        [bike] => yz450f(2016)
        [uid] => 90380
    )

[3] => Array
    (
        [name] => Player Four
        [time] => 8791
        [bike] => 450sxf(2016)
        [uid] => 89240
    )

[4] => Array
    (
        [name] => Player Five
        [time] => 19640
        [bike] => 450sxf(2016)
        [uid] => 98809
    )
)

这是包含2stroke数据的数组,它处于基本形式,在任何列被过滤之前。

Array
(
    [90970] => Array
        (
        [time] => 11929
        [bike] => rm250(2008)
        [number] => 123
        [name] => Player One
        [uid] => 90970
        [url] => /path/to/player/info
    )

[9248] => Array
    (
        [time] => 9922
        [bike] => cr250(2007)
        [number] => 124
        [name] => Player Twelve
        [uid] => 60030
        [url] => /path/to/player/info
    )
)

在这个阶段,我想要的是一种方法,如果一个玩家在2冲程赛车中更快,就用2冲程时间替换4冲程时间。如果不需要过滤掉不必要的数据并在将rr450f转换为rec450时丢失数组的关联,则可以跳过该步骤。非常感谢任何关于如何用第二个数组中的值替换第一个数组中的值的信息!
1个回答

1
你可能从错误的角度看待了这个问题。
本质上,你想要实现的是按'time'键对多维数组进行排序。

http://docs.php.net/manual/en/function.array-multisort.php

在创建数组后,请尝试使用以下代码。
$list = array();
foreach ($rec450 as $key => $row)
  {
    $list[$key] = $row['time'];
  }
array_multisort($list, SORT_ASC, $rec450);

这里正在发生的是,我们将所有时间都组成一个数组,然后根据这个新数组对主数组进行排序。
我必须要给这个原始帖子和被接受的答案一些赞誉。 如何在PHP中按给定键的值对关联数组的数组进行排序?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接