Почему функция выдает false

1. Удаленный (07.10.2009 / 21:42)
Должна дать true.
function chess_peshka($r,$d,$gn,$vn,$gv,$vv){
  $n=$gn.$vn;
  $v=$gv.$vv;
  $r=str_split($r);
if(empty($d)){
     if($gn=='7' && $gv=='5'){
     if($r[$n-20]=='0' && $r[$n-10]=='0' && $v==($n-20))
      {return true;}
      else{return 2;}
      }
  if($n==($v-10)){
  if($r[$v]=='0')
  {return true;}
  else{return 3;}
  }
        if($n==($v-9)){
        if(eregi("[a-f]", $r[$v]))
        {return 4;}
        else{return true;} 
        }
    if($n==($v-11)){
    if(eregi("[a-f]", $r[$v]))
    {return 5;}
    else{return true;} 
    }
}else{
     if($gn=='2' && $gv=='4'){
     if($r[$n+20]=='0' && $r[$n+10]=='0' && $v==($n+20))
      {return true;}
      else{return false;}
      }
  if($n==($v+10)){
  if($r[$v]=='0')
  {return true;}
  else{return false;}
  }
        if($n==($v+9)){
        if(!eregi("[^g-l]", $r[$v]))
        {return false;}
        else{return true;} 
        }
    if($n==($v+11)){
    if(!eregi("[g-l]", $r[$v]))
    {return false;}
    else{return true;} 
    }
}
return false;
}


2. Lugaro (07.10.2009 / 21:49)
на последнии строки смотри
return false;
}
P.S пиши код нормально, глаза режет

3. Удаленный (07.10.2009 / 21:58)
$r='00000000000adadadad00adadadad000000000000000000000000000000000000000000adadadad00adadadad00000000000';
$d='';
$gn=7;
$vn=1;
$gv=6;
$vv=1;

4. Lugaro (07.10.2009 / 22:02)
Ы ты про что?
Убери предпоследнюю строку и твои глаза узреют счастье (:

5. Удаленный (07.10.2009 / 22:40)
Разници никакой всеравно пусто а должно быть 1

6. Александр (07.10.2009 / 23:05)
как никакой false и пустота это разница))

7. Удаленный (07.10.2009 / 23:21)
Ну я проверял так if (chess_peshka($r,$d,$gn,$vn,$gv,$vv)){echo 1;}else{echo 'false';}

8. Удаленный (08.10.2009 / 02:42)
Убрал и всеравно.

9. Удаленный (08.10.2009 / 02:44)
Да насколько я знаю функция выводит первое возвращение.

10. SD (08.10.2009 / 15:12)
потому че:
$n=$gn.$vn;
$v=$gv.$vv; - строковые переменные,
а тут - if($n==($v-10))
ты пытаешься произвести вычитание числа из строки.
пиши так:
$n=(int)($gn.$vn);
$v=(int)($gv.$vv);
Да и плюс условие, удовлетворяюшее if($n==($v-10)){, с переменными $gn=7 $vn=1; $gv=6; $vv=1;, есть только в блоке функции, где $d равно не пустой строке

11. Удаленный (08.10.2009 / 19:56)
Просидел над ней полтора часа и выяснил што насамом деле проблема заключается когда значение unset($d);
if($n==($v-10))
заменил на
if($n==($v+10))
а при значении $d=1;
if($n==($v+10))
заменил на
if($n==($v-10))
глупая ошибка немного запутался.
#11 твои идеи я учту
нащет (int) я проверяю перед функцией при выдачи етих переменых а вот за $d=''; спасибо заменил на if($d!==1)
и в приеме поставил if($d!==1){unset($d);}

12. Удаленный (08.10.2009 / 19:57)
спасибо большое всем за помощь.

13. Удаленный (08.10.2009 / 20:01)
11 извини но я уже ставил тибе плюс.

14. SD (09.10.2009 / 10:19)
12, просто ТОЧКА - соединяет части строк, даже если исходные данные в переменных были числом, они автоматически переводятся в строку, поэтому и нужно преобразовывать строку в число, что и делает инт

15. Удаленный (09.10.2009 / 18:17)
Ладно заменим но и так работает.

URL: https://visavi.net/topics/1488