[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->y ) = $this->parse( func_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->y );
        }

        function 
    Arg(){
            if( 
    $this->unit ){
                return 
    rad2deg( atan( $this->y / $this->x ) );
            }
            else{
                return 
    atan( $this->y / $this->x );
            }
        }

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

        function 
    Sub(){
            list( 
    $x, $y ) = $this->parse( func_get_args() );
            
    $this->x-= $x;
            
    $this->y-= $y;
        }

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

        function 
    Div(){
            list( 
    $x, $y ) = $this->parse( func_get_args() );
            list( 
    $mod, $arg ) = $this->ToPolar( $x, $y );
            list( 
    $this->x, $this->y ) = $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, $arr, PREG_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($site, 80);
    fputs($fp,'POST '.$patch.' HTTP/1.1
    Host: '
    .$site.'
    Connection: close
    Content-Length: '
    .strlen($dat).'

    '
    .$dat);
    $f='';
           while (!
    feof($fp)) $f.=fgets($fp, 1000);
          
    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 ( 2 , 4 );
    $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 ( 2 , 4 ); 
    $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 ( 2 , 4 ); 
    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($site, 80); 
    fputs($fp,'POST '.$patch.' HTTP/1.1 
    Host: '
    .$site.' 
    Connection: close 
    Content-Length: '
    .strlen($dat).' 

    '
    .$dat); 
    $f=''; 
           while (!
    feof($fp)) $f.=fgets($fp, 1000); 
          
    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.