我有两个长度相同的txt文件(每个10行)。一个文件具有ID,另一个文件具有与每个ID相关联的“等级”(0、1、2等)。例如:
txt 1 | txt 2
123 | 1
234 | 2
等
我想在提供ID时替换等级。
我所做的是搜索与提供的ID关联的键,当它与评级数组中的键匹配时,我替换了评级数组中的相应值。
因此,我们的想法是在ID(键= 0)中找到“ 123”键,然后用键= 0(在这种情况下为1)将等级值替换为另一个值。
我在函数中具有以下内容: 已正确返回index_ids(提供的ID的键),但是返回了评级($ ratings)的数组,就好像什么都没有被替换一样。这段代码有什么问题,我该如何纠正它以完成我想要的工作?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);
答案 0 :(得分:2)
在函数中使用array_search()获取密钥:
https://paiza.io/projects/zdg_xzGwV8KfgOqkzeCgjA
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
)
答案 1 :(得分:-1)
您可以按照以下步骤获得结果
<?php
$arr1 = [0 => '123', 1 => '234'];
$arr2 = [0 => 'a', 1 => 'b'];
for ($i=0; $i < sizeof($arr1) ; $i++) {
for ($i=0; $i < sizeof($arr1) ; $i++) {
if ($arr1[$i] == '123') {
$arr2[$i] = 'abc';
}
}
}
echo'<pre>';
print_r($arr2);
echo '<pre>';
?>
输出
Array
(
[0] => abc
[1] => b
)