Из-за особенностей протокола HTTP и способа работы функции curl_setopt $ anarray нельзя передать напрямую в виде массива.
Следующее утверждение:
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
принимает массив параметров POST, и для каждого из них должно быть имя строки и значение STRING . Вместо этого вы передаете значение массива, поэтому процессор PHP вынужден преобразовывать его в строку, используя некий встроенный алгоритм с ошибками, что приводит к выдаче ранее упомянутого уведомления («Преобразование массива в строку в ...»).
Итак, чтобы правильно передать этот массив ($ anarray) на другую сторону, вы должны позаботиться о его кодировании (в строку) самостоятельно, а другая сторона должна позаботиться о его декодировании ( из строки).
Мой подход в таких ситуациях - JSON. Это достаточно подходит практически во всех случаях. Все, что вам нужно сделать, это применить следующую технику:
$data=array(
'anarray'=>json_encode($anarray),
'var1'=>$var1,
'var2'=>$var2
);
А затем, на другой стороне соединения, вы получите исходный массив следующим образом:
$anarray=json_decode($_POST['anarray'],true); // true indicates for associative array rather than an object