You may be trying to validate a mainnet address on a testnet/regtest client.
For the benefit of others:
$command = new \Nbobtc\Command\Command('getinfo');
$client = new \Nbobtc\Http\Client('http://username:password@localhost:18332');
# legacy testnet address
#$address = "mvM368BXwRNx4HcYdL8XbU8hAX274gMKcq";
# bech32 address
#$address = "2Mzm5MPhGWTxNcZPGfpW7URR4mASKzsCZ3k";
# mainnet address
$address = "1KJFgSXpPvUthy3a7NxyM66szTkqHabpYB";
$command = new \Nbobtc\Command\Command('validateaddress', [$address]);
$response = $client->sendCommand($command);
$contents = $response->getBody()->getContents();
I observe that bitcoin 0.18.1 will return as OP describes when attempting to validate a mainnet address on a testnet/regtest client, and return correct details otherwise.
If not, could you edit in to your question the actual address and the bitcoin.conf you're using.
Edit: I notice there IS a difference. I'm getting
vs OP getting
Array ( [result] => Array ( [isvalid] => ) [error] => [id] => )
Perhaps there is some post-processing you're doing to $contents that is losing the value?