Передайте Массив через Функцию, Обновите значения

#php

Вопрос:

Я хочу обновить «время встречи» в массиве, если будут выполнены определенные условия. Я успешно извлекаю результирующий набор:

 $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() функция. Я не получаю никаких ошибок, чтобы предположить, что я делаю неправильно.

Комментарии:

1. Не могли бы вы поделиться образцом $results массива?

Ответ №1:

Вы можете просто назначить замененное значение вместо использования 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']);