2017-06-30 96 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?