Quando você usa uma matriz ao definir a opção cURL HTTPPOSTFIELDS, isso mudará o tipo de conteúdo da solicitação para dados de formulário com várias partes, o que pode estragar as coisas. Você pode usar uma string codificada por url, como:
'something=' . rawurlencode('value') . '&foor=' . rawurlencode('bar')
mas, em vez disso, considere usar a função interna do PHP http build query (). Isso pegará uma matriz (que é mais limpa) e construirá uma string semelhante ao exemplo anterior para você, incluindo escape de URL quando necessário e usando & e & corretamente.
Isso permitirá que você faça algo assim:
$field = array('something' => 'value', 'foo' => 'bar');
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields)
Isso é especialmente importante ao usar APIs com autenticação como OAuth, onde você precisa gerar assinaturas.