БЫстрая сортировка
<?php $mas = array(5,3,-1,4,2,-300,6,-500,-100); function sos($a1,$a2) { return $a2 - $a1; } function dobavka(&$mas, $func){ sortirovka($mas, 0, count($mas)-1, $func); } function sortirovka(&$mas,$min,$max,$func){ $i = $min; $j = $max; $x = $mas[($min+$max)/2]; do{ while($func($mas[$i], $x)<0) ++$i; while($func($mas[$j], $x)>0) --$j; if($i<=$j){ $element = $mas[$i]; $mas[$i] = $mas[$j]; $mas[$j] = $element; $i++; $j--; } }while($i<=$j); if($min<$j) sortirovka($mas,$min,$j, $func); //начало с серединой if($i<$max) sortirovka($mas,$i,$max, $func); // середина с концом } dobavka($mas, 'sos'); foreach($mas as $rez) echo $rez.' '.' '; ?> Смущает, как в переменную $func можно добавить круглые скобки и записать выражение? while($func($mas[$i], $x)<0) ++$i; while($func($mas[$j], $x)>0) --$j; Что это означает? С функцией понимаю ,а вот с переменной, как она со скобками и внутри выражение? |
Попробовал написать такой код, который вычисляет квдадрат числа.
function santa($n) { return $n*$n; } function balta($n) { return $n(5); } echo balta("santa"); echo '<br />'; Как-то странно так получилось, ради интереса написал santa в параметре функции и ошибок не выдало. Это что, получается я передал всю функцию санта в функции балта? В пхп разве если при вызове писать что-то в кавычках и оно совпадет с названием функции ранее где-то описаной в коде выше то передастся не строка ,а сама функция в качестве аргумента? |
Цитата:
но когда вы пишите Цитата:
|
Я так понял интерпретатор языка ПХП когда видит название переменной, а за ней скобки, подставляет значение этой переменной в название этой переменной со скобками,если значение этой переменной совпало с названием такой функции описаной где-то в коде.
|
Часовой пояс GMT +3, время: 19:30. |