PHP数组值替换(或替代)

时间:2017-06-30 10:50:25

标签: php arrays replace

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

我现在存储在数组中的是玩家ID,时间,姓名和自行车。我正在获取的数据是将自行车分为2类(2和4冲程),因此我必须单独获取每组数据。数组“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
    )
)

在过滤掉任何列之前,这是包含2个基本形式的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笔画上的速度更快,我想要的是用2stroke时间替换4stroke时间的方法。如果我在执行rr450f到rec450时不必过滤掉不必要的数据并丢失数组的关联,我可以跳过它。

非常感谢我如何将第一个数组中的值替换为第二个数组中的值!

1 个答案:

答案 0 :(得分:1)

你可能会看到这个错误。

基本上你要实现的是按照“时间”的关键对多维数组进行排序。

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

创建阵列后尝试以下代码

ini_set('display_errors', 1);
error_reporting(E_ALL);

这里发生的是我们在所有时间中创建一个数组,然后根据新数组对主数组进行排序。

我必须在此原帖中加入一些信用,并接受答案。

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