2017-06-30 94 views
3

我正在从一个从外部源获取信息然后处理数据的系统上工作。在JavaScript中处理数据时,我已经完成了它为客户端做我希望的功能。接下来是我想将信息存储在数据库中。但在这里我只想用PHP(或者其他服务器端的方式)来处理它。目前令我困惑的是一些数组替换的东西。PHP数组值替换(或替代)

我现在储存在阵列中的是玩家ID,时间,姓名和自行车。我提取的数据是将自行车划分为2个类别(2和4stroke),因此我必须单独提取每组数据。数组“rec450”包含来自4stroke类的相关信息。我想在这里做的是比较给定用户的2stroke类,看看2stroke的时间是否更快。如果是这样,我想用“2stroke”数组中的新信息替换“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:

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 
    ) 
) 

在这个阶段,我想是某种方式与2stroke次更换4stroke倍,如果球员是在2stroke更快。如果在我将rr450f写入rec450时不必过滤掉不必要的数据并丢失数组的关联,那么我可以忽略它。

我真的很感激任何有关如何将第一个数组中的值与第二个数组中的值进行替换的信息!

回答

1

您可能会看到这个错误。

基本上你想要实现的是按'时间'键排序一个多维数组。

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); 

这里发生的事情是,我们正在创建一个数组了所有的时间,然后排序的主要数组根据该新阵列。

我必须添加一些信用背后,从这个原始帖子,并接受答案。

How to sort an array of associative arrays by value of a given key in PHP?