Почему массив с переменной выдает не тот результат?
Вы получаете ровно то что просите. 
// 1. Круглые скобки зачем? 
$d = "1, 2, 3"; // Строка

// 2. $array = array($d);
$array = array("1, 2, 3"); // Массив с одним элементом - строкой

// Если хотели в первой строке массив, то это делается квадратными
// скобками и разделяем запятыми
$d = [1, 2, 3]; // Массив

// Если хотели во второй строке массив, то это делается методом explode
$d = "1, 2, 3";
$array = explode(', ', $d); // Массив [1, 2, 3]
Если предполагается, что в $d будет попадать список именно в виде строки, то можете воспользоваться explode();

$d = "1, 2, 3";
$array = explode(", " $d);
print_r($array);