#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']);