首页 > 解决方案 > 通过函数传递数组,更新值

问题描述

如果满足某些条件,我想更新数组中的“meet_time”。我成功检索了结果集:

$subject_set = get_array();
$results = mysqli_fetch_all($subject_set, MYSQLI_ASSOC);

然后它通过一个函数来尝试更新值:

function process_values($results) {
  foreach($results as $k=>$v) {
    if ($v['sun'] == '1') {
      array_replace($results, [$v['meet_time']=>'1800']);
    }
    if ($v['mon'] == '1') {
      array_replace($results, [$v['meet_time']=>'1200']);
    }
    $b[] = $v['meet_time'];
  }
  asort($b);
  foreach ($b as $k=>$v) {
    $c[] = $results[$k];
  }
  return $c;
}

$sorted = process_values($results);

我想使用这个新数组:

foreach ($sorted as $row) {
    echo $row['meet_time'] . "<br />;
}

预期结果将是:

1200
1800

但它们与数据库中原始结果集中的结果相同(既不是 1200 也不是 1800)。我可以输入asort()任何值,$b[]但它不受array_replace()功能的影响。我没有收到任何错误提示我做错了什么。

标签: php

解决方案


您可以只分配替换的值而不是使用array_replace

代替

array_replace($results, [$v['meet_time']=>'1800']);

$results[$k]['meet_time'] = '1800'; //1200 or whatever value you want

或者

  array_replace($results[$k], [$v['meet_time']=>'1800']);

推荐阅读