Efficiently displaying elements in an array
You can effectively get rid of the switch statement as well as the is_array check in the count ternary if you do the check in the beginning (and exit early at that - so not wasting any cycles). 

You can also get rid of 

# Only prepend comma if not the first element
if($i &gt; 0) { 
    $output .= $separator;
}


If you add a ternary concat to $output (at the expense of gaining 2 opcode calls over the if/else). This would be the function after cleaning it:

function listOut($array = array(), $oxford = false, $conjunction = 'and', $separator = ", ") {
    if(!is_array($array)){ # We're expecting an array 
        return false;
    }

    $count = count($array) ?: 0;
    $output = "";

    if($count == 2){ return implode(" $conjunction ", $array); }

    for($i = 0; $i &lt; $count; $i++) {
        # Add a conjunction if it's the last element in the array
        if($i + 1 === $count) {
            $separator = $oxford ? $separator . "$conjunction " : " $conjunction ";
        }

        # Add the element to the return string
        $output .= ($i &gt; 0 ? $separator : "") . $array[$i];
    }

    return $output;
}


and the test outputs:

$array = 'blue';
$array1 = array('orange');
$array2 = array('white', 'gold');
$array3 = array('black', 'white', 'purple');
$array4 = array('black', 'white', 'purple', 'gold');

echo listOut($array) . "&lt;br&gt;";
echo listOut($array1) . "&lt;br&gt;"; // orange
echo listOut($array2) . "&lt;br&gt;"; // white and gold
echo listOut($array3, true) . "&lt;br&gt;"; // black, white and purple
echo listOut($array4) . "&lt;br&gt;"; // black, white and purple


Results:

false
orange
white and gold
black, white, and purple
black, white, purple and gold