如果数组的键与另一个数组的键匹配,如何替换数组中的元素?

我有两个长度相同的 txt 文件(每个文件 10 行)。一个文件具有 ID,另一个文件具有与每个 ID 关联的“评级”(0、1、2 等)。例如:

文本 1 | 文本 2
123 | 1
234 | 2

我想在提供 ID 时替换评级。

我所做的是搜索与提供的 ID 关联的键,当它与 ratings 数组中的键匹配时,我替换 ratings 数组中的相应值。

因此,想法是在 ids (key=0) 中找到 '123' 的键,并将评级值替换为 key=0(在本例中为 1)以获得另一个值

我在函数中有以下内容:

public function updateRating($disease, $id, $rating){

    $filename = $disease.".txt";

    $filename_2 = $disease."Ratings.txt";

    $ids = file($filename);

    $ratings = file($filename_2);


    $index_ids = array_keys($ids, $id."\n");

    $index_ratings = array_keys($ratings);


    $size = count($ids);


    for($i=0; $i<$size; $i++){

        if($index_ratings[$i] == $index_ids){

            $ratings = str_replace($ratings[$i], $rating."\n", $ratings);

        }

    }


    $ratings_n = implode("", $ratings);

    file_put_contents($filename_2, $ratings_n);

    return array("debug2" => $index_ids, "debug3" => $index_ratings, "debug4" => $ratings);

index_ids(提供的 ID 的键)被正确返回,但是评级数组($ratings)被返回,就好像什么都没有被替换一样。这段代码有什么问题,我怎样才能更正它来做我想做的事?


回首忆惘然
浏览 89回答 2
2回答

叮当猫咪

在您的函数中使用 array_search() 来获取密钥:function replaceValue($value, $arr1, &$arr2){    $key = array_search($value, $arr1);    if($key === false){        return false;    }else{        $arr2[$key] = $value;        return true;    }}if(replaceValue("baz", $arr1, $arr2)){    print_r($arr2);}else{    echo "no match found";}Result:Array(    [x] => bizz    [y] => bazz    [c] => baz)

米脂

您可以按照这种步骤来实现结果<?php$arr1 = [0 => '123', 1 => '234'];$arr2 = [0 => 'a', 1 => 'b'];for ($i=0; $i < sizeof($arr1) ; $i++) {&nbsp;&nbsp; &nbsp; for ($i=0; $i < sizeof($arr1) ; $i++) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if ($arr1[$i] == '123') {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $arr2[$i] = 'abc';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}echo'<pre>';print_r($arr2);echo '<pre>';?>输出Array(&nbsp; &nbsp; [0] => abc&nbsp; &nbsp; [1] => b)
打开App,查看更多内容
随时随地看视频慕课网APP