2017-06-30 8 views
3

私は、外部ソースから情報を取り出し、そのデータを少し処理するシステムに取り組んでいます。私はJavaScriptでデータを処理するときに、クライアントのために私の望む機能を実行するようにしました。次は、情報をデータベースに保存したいということです。しかし、ここで私はそれをPHP(またはそれを行う他のサーバ側の方法)でのみ処理したいと思っています。私が現在混乱させているのは、配列を置き換えるものです。PHP配列の値の置換(または代替)

私が現在配列に格納しているのは、プレイヤーID、時、名前、自転車です。私がフェッチしているデータは、バイクを2つのクラス(2と4ストローク)に分割しているため、それぞれのデータセットを個別にフェッチする必要があります。配列 "rec450"には、4strokeクラスの関連情報が含まれています。私がここでやりたいことは、特定のユーザーの2ストローククラスを比較し、2ストロークで時間がより速いかどうかを確認することです。もしそうなら、私は "rec450"配列のデータを2ストローク配列の新しい情報で置き換えたいと思っています。だから私は、この機能を持っているしたいと思います:ここで

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

これは、列が除外される前に、基本形式の2ストロークデータを含む配列です。この段階で

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上だった場合2stroke時間で4stroke時間を交換するいくつかの方法です。不必要なデータをフィルタリングする必要がなく、r450fからrec450を実行しているときに配列の関連付けを失う場合、私はそれをスキップすることができます。

第1の配列の値を第2の配列の値に置き換える方法については、本当に感謝しています。

答えて

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?

関連する問題