Эта функция не работает так, как задумал создатель.Переменная $Value
оценивается как строго булева, но затем ей выполняются математические операции.Невозможно решить эту проблему, не изменив исходную функцию.
Также, похоже, отсутствует закрывающая скобка.
Функция называется как:
function index()
{
var_dump( $this->CalcPlayerPoints(array( 'profyears' => 10 )) );
}
function CalcPlayerPoints($Player) {
$Points = 0;
foreach($Player as $key => $Value) {
switch ($key) {
case "profyears":
if($Value===true) // this should be true
$Points+=($Value*5); // this should take tha value I give in the class construct
break;
case "gentleman":
if($Value===true)
$Points+=10;
break;
}
}
return $Points; // that should be maximized
}
будет отображать int 0
каждый раз, независимо от того, какое целое значение вы указали.Если исходная функция может быть изменена для исключения строгого сравнения, например:
function index()
{
var_dump( $this->CalcPlayerPoints(array( 'profyears' => 10 )) );
}
function CalcPlayerPoints($Player) {
$Points = 0;
foreach($Player as $key => $Value) {
switch ($key) {
case "profyears":
if($Value==true) // this should be true
$Points+=($Value*5); // this should take tha value I give in the class construct
break;
case "gentleman":
if($Value==true)
$Points+=10;
break;
}
}
return $Points; // that should be maximized
}
, функция выдаст ожидаемые результаты: int 50