[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. AFoST

    AFoST Elder - Старейшина

    Joined:
    28 May 2007
    Messages:
    588
    Likes Received:
    485
    Reputations:
    176
    Есть ли на php класс для работы с комплесными числами?
    или нужна замена метода imag из класса complex для с++.
     
  2. TDKronuS

    TDKronuS Member

    Joined:
    9 Nov 2009
    Messages:
    64
    Likes Received:
    13
    Reputations:
    3
    На phpclasses нашел такой:
    PHP:
    <?
    define('Z_CARTESIAN'0);
    define('Z_POLAR'1);
    define('Z_RADIAN'0);
    define('Z_DEGREE'1);


    class 
    Z{

    // Constructor
        
    function Z($var ""$im ""$type Z_CARTESIAN$unit Z_RADIAN ){
            if( 
    $unit ){
                
    $this->unit $unit;
            }

            list( 
    $this->x$this->) = $this->parsefunc_get_args() );
        }

    // Public Functions

        
    function SetUnit($unit Z_RADIAN){
            
    $this->unit $unit;
            return 
    $this->unit;
        }

        function 
    Re(){
            return 
    $this->x;
        }

        function 
    Im(){
            return 
    $this->y;
        }

        function 
    Mod(){
            return 
    hypot$this->x$this->);
        }

        function 
    Arg(){
            if( 
    $this->unit ){
                return 
    rad2degatan$this->$this->) );
            }
            else{
                return 
    atan$this->$this->);
            }
        }

    # For the following 4-op functions, input vars is same as constructor function.
        
    function Add(){
            list( 
    $x$y ) = $this->parsefunc_get_args() );
            
    $this->x+= $x;
            
    $this->y+= $y;
        }

        function 
    Sub(){
            list( 
    $x$y ) = $this->parsefunc_get_args() );
            
    $this->x-= $x;
            
    $this->y-= $y;
        }

        function 
    Mul(){
            list( 
    $x$y ) = $this->parsefunc_get_args() );
            list( 
    $mod$arg ) = $this->ToPolar$x$y );
            list( 
    $this->x$this->) = $this->ToCartesian$this->Mod()*$mod$this->Arg()+$arg );
        }

        function 
    Div(){
            list( 
    $x$y ) = $this->parsefunc_get_args() );
            list( 
    $mod$arg ) = $this->ToPolar$x$y );
            list( 
    $this->x$this->) = $this->ToCartesian$this->Mod()/$mod$this->Arg()-$arg );
        }





    // Private functions


        
    function parse$arr ){
            list (
    $var$im$type$unit ) = $arr;
        
            if( 
    $var ){
                if( 
    $im ){
                    if( 
    $type == Z_POLAR ){
                        if( 
    stristr$im"d" ) || ( ($unit == Z_DEGREE) && (!stristr$im"d" )) ) ){
                            
    $im deg2rad$im );
                        }
                        list( 
    $x$y ) = $this->ToCartesian$var$im );
                    }
                    else{
                        
    $x $var;
                        
    $y $im;
                    }
                }
                else{
                    list( 
    $x$y ) = $this->parse_number$var );
                }
            }
            return array( 
    $x$y );
        }


        function 
    parse_number($str){
            
    $str preg_replace("/\s*/","",$str);
            if( 
    preg_match("/(?i)[^erd\-+ij.,0-9]+/"$str) ){
                return -
    1;
            }
            else{
                if( 
    stristr$str"e" ) ){
                    
    preg_match("/(?i)([0-9]+)e-[ij]?([0-9rd]+)[ij]?/"$str$arr);
                    if( 
    sizeof$arr ) ){
                        if( 
    stristr$arr[2], "d" ) ){
                            
    $arr[2] = deg2rad$arr[2] );
                        }
                        list( 
    $re$im ) = $this->ToCartesian$arr[1], $arr[2] );
                    }
                }
                else{
                    
    preg_match_all"/(?i)([\-+]?[0-9.,ij]+)/"$str$arrPREG_SET_ORDER );
                    if( 
    sizeof$arr ) ){
                        foreach( 
    $arr as $number ){
                            if( 
    preg_match"/(?i)[ij]/"$number[1] ) ){
                                
    $im += $number[1];
                            }
                            else{
                                
    $re += $number[1];
                            }
                        }
                    }
                }
                return array(
    $re$im);
            }
        }
        









        function 
    ToCartesian$mod$ang ){
            return array( ( 
    $mod*cos($ang) ), ( $mod*sin($ang) ) );
        }
        
        function 
    ToPolar$re$im ){
            return array( 
    hypot$re$im ) , atan( ($im/$re) ) );
        }
        
    }

    ?>
     
    #13142 TDKronuS, 21 Dec 2009
    Last edited: 21 Dec 2009
    1 person likes this.
  3. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    perldoc Math::Complex ))
    
     
  4. akahaos

    akahaos Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Подскажите скриптик, отправляю из проги пост запрос с содержанием например 'info=12345' нужно чтоб скрипт сохранил данный текст в файл
     
  5. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Помогите с str_replace()

    Есть строка и массив:
    '1', '2', '3', '4'
    Array ( [0] => 2 [1] => 4 )
    нужно удалить и строчки '2', и '4'
    получиться должно: '1', '3'

    :confused:
     
  6. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    не совсем понятно :( можно примерчик? спасибо!
     
  7. Eo0

    Eo0 Member

    Joined:
    12 Sep 2009
    Messages:
    62
    Likes Received:
    8
    Reputations:
    0
    PHP:
    $str='1,2,3,4';
    $del=array(2,4);
    $str=str_replace($del,'',$str);
    $str=str_replace(',,',',',$str);
    $arr=explode(',',$str);
     
    1 person likes this.
  8. Eo0

    Eo0 Member

    Joined:
    12 Sep 2009
    Messages:
    62
    Likes Received:
    8
    Reputations:
    0
    PHP:
    $site='fbi.ru';
    $patch='new.php';
    $dat='?info=1234';
    $fp fsockopen($site80);
    fputs($fp,'POST '.$patch.' HTTP/1.1
    Host: '
    .$site.'
    Connection: close
    Content-Length: '
    .strlen($dat).'

    '
    .$dat);
    $f='';
           while (!
    feof($fp)) $f.=fgets($fp1000);
          
    fclose($fp);
    file_put_contents('file.txt',$f);
    php 5<=
     
  9. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    стоп, задача упростилась, вот: :rolleyes:


    $str = "1,2,3,4";
    массив = Array ( [0] => 2 [1] => 4 )
    получиться должно:
    $str="1,3";
     
    #13149 mff, 22 Dec 2009
    Last edited: 22 Dec 2009
  10. Eo0

    Eo0 Member

    Joined:
    12 Sep 2009
    Messages:
    62
    Likes Received:
    8
    Reputations:
    0
    Понятно.
    PHP:
    $str "1,2,3,4";
    $arr= Array ( );
    $str=str_replace($arr,'',$str);
    $str=str_replace(',,',',',$str);
     
    1 person likes this.
  11. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Большое спасибо. [​IMG] Получилось: ,3,4 :confused:

    и еще если $arr= Array ( 3 , 2 );
    то получается:
    1,,4

    если $arr= Array ( 1, 4 );
    то получается:
    ,2,3,


    :confused:
     
    #13151 mff, 22 Dec 2009
    Last edited: 22 Dec 2009
  12. Eo0

    Eo0 Member

    Joined:
    12 Sep 2009
    Messages:
    62
    Likes Received:
    8
    Reputations:
    0
    PHP:
     $str "1,2,3,4"
    $arr= Array ( ); 
    $str=str_replace($arr,'',$str); 
    $str=str_replace(',,',',',$str);
    if(
    $str[strlen($str)]==',') unset($str[strlen($str)]);
    if(
    $str[0]==',') unset($str[0]);
     
  13. akahaos

    akahaos Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Eo0, не срабатывает(
     
  14. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    mff
    PHP:
     $str "1,2,3,4"
    $arr= Array ( ); 
    echo 
    implode(',',array_intersect($arr,explode(',',$str)));
     
    _________________________
    1 person likes this.
  15. Eo0

    Eo0 Member

    Joined:
    12 Sep 2009
    Messages:
    62
    Likes Received:
    8
    Reputations:
    0
    Забыл слэш
    PHP:
    $site='ya.ru'
    $patch='/index.php'
    $dat='?info=1234'
    $fp fsockopen($site80); 
    fputs($fp,'POST '.$patch.' HTTP/1.1 
    Host: '
    .$site.
    Connection: close 
    Content-Length: '
    .strlen($dat).

    '
    .$dat); 
    $f=''
           while (!
    feof($fp)) $f.=fgets($fp1000); 
          
    fclose($fp); 
    file_put_contents('file.txt',$f);
     
  16. akahaos

    akahaos Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Все равно чтото не хочет. Версия PHP 5.2.10
     
  17. Eo0

    Eo0 Member

    Joined:
    12 Sep 2009
    Messages:
    62
    Likes Received:
    8
    Reputations:
    0
    у меня работает. Наверно на хосте нет библиотеки сокетов.
     
  18. akahaos

    akahaos Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    А в этом скрипте сохраняется ответ сервера в файл? Мне надо чтоб в файл сохранялось все что после 'info='
     
  19. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Ох ты, спасибо большое! Но если
    Array ( 2 , 4 ); получается $str = "2,4"; :) а должно получиться наоборот $str = "1,3"; то есть Array ( 2 , 4 ); нужно вырезать из $str = "1,2,3,4"; и получить $str = "1,3"; :confused: :(
     
  20. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    не, получается 1,3, :confused:
     
Thread Status:
Not open for further replies.