Имя переменной как переменная

У меня есть вопрос об использовании переменных в качестве имени переменной. У меня есть массив с именами полей базы данных в качестве ключей и свойств объекта в виде значений, подобных этому:

$properties = array("userid" => "user['userid']", "city" => "hometown");

foreach ($properties as $field => $property ) { 
  $value1 = $db->$field;
  $value2 = $obj->$property;
}

Это работает для родного города, но не работает для пользователя ['userid']. Как правильно адресовать переменную свойства?
Я также попробовал несколько вещей, таких как: $ {property} или {$ property}, но пока безуспешно.

редактировать: спасибо за все ответы! Пока я останусь с моим оригинальным решением, мне было интересно, если был способ, у меня нет принципиальных проблем с eval-версией, буду помнить об этом!

 foreach ($fields as $field => $property ) {
        switch ($field) {
            case "userid":
                $newvalue = $this->user['userid'];
                $oldvalue = $original->user['userid'];
                break;
            // more cases ...
            default:
                $newvalue = $this->{$property};
                $oldvalue = $original->($property};
        } 
        ....

Ответы на вопрос(3)

Ваш ответ на вопрос