Nome variável como variável

Eu tenho uma pergunta sobre o uso de variáveis como nome da variável. Eu tenho uma matriz com nomes de campo de banco de dados como propriedades de chave e objeto como valores como este:

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

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

Isso funciona para a cidade natal da propriedade, mas não para o usuário da propriedade ['userid']. Qual é a maneira correta de abordar a variável de propriedade?
Também tentei várias coisas como: $ {property} ou {$ property}, mas sem sorte ainda.

edit: Obrigado por todas as respostas! Por enquanto, continuarei com minha solução original. Fiquei imaginando se havia uma maneira. Não tenho problemas principais com a versão eval, lembre-se disso!

 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};
        } 
        ....

questionAnswers(6)

yourAnswerToTheQuestion