Let's try and actually measure the difference between PHP and C function implementations.

<?php
require_once "Benchmark/Iterate.php";

$test_array = create_random_array(100);

foreach(array('max', 'my_max') as $func) {
    $b = new Benchmark_Iterate;
    $b->run('10000', $func, $test_array);
    $result = $b->get();
    
    print "$func\t";
    printf("System + User Time: %1.6f\n", 
           $result['mean']);
}


function create_random_array($size) {
    $array = array();
    for($i=0; $i < $size; $i++) {
        $array[$i] = rand();
    }
    return $array;
}

function my_max($array) {
    reset($array);
    $max = current($array);
    while( $el = next($array)) {
        if($el > $max) {
            $max = $el;
        }
    }
    return $max;
}
?>