【问题标题】:php splitting large numbers (like explode)php拆分大数(如爆炸)
【发布时间】:2011-02-18 02:15:03
【问题描述】:

我需要phpexplode()的功能,但没有分隔符。

例如,将变量“12345”变成一个数组,分别保存每个数字。

这可能吗?我已经用谷歌搜索了,但只找到了explode(),这似乎不起作用。

谢谢!

【问题讨论】:

    标签: php explode


    【解决方案1】:

    使用 php 中的任何字符串:

    $foo="12345";
    echo $foo[0];//1
    echo $foo[1];//2
    //etc
    

    或(来自 preg_split())手册中的页面

    $str = 'string';
    $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
    print_r($chars);
    

    甚至更好:

    $str = 'string';
    $chars=str_split($str, 1)
    print_r($chars);
    

    preg_split() 与 str_split() 的基准

     function microtime_float()
    {
        list($usec, $sec) = explode(" ", microtime());
        return ((float)$usec + (float)$sec);
    }
    
    
    $str = '12345';
    $time_start = microtime_float();
    for ($i = 0; $i <100000; $i++) {
    $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
    //$chars=str_split($str, 1);
    }
    $time_end = microtime_float();
    $time = $time_end - $time_start;
    
    echo "$time seconds\n";
    

    结果:

    str_split  =0.69
    preg_split =0.9
    

    【讨论】:

    • preg_split 将是一个非常糟糕的选择
    • @Phil Brown 为什么?速度?除非你碰巧做了 10000 次,否则它会在人类水平上引起注意吗?
    • 确实,你为什么要使用正则表达式呢?
    • 我的示例来自手册,但我同意,基准测试:100 万次 preg_split =0.9 秒 str_split=0.69 秒,在人类层面上不是一个大问题
    • 首先,如果你想使用给出的基准数字,你需要分享测试。任意给出结果对我来说绝对没有任何意义,任何人也不应该,除非我们可以重现结果。至于差异,是的,它们会很小。但是你为什么要使用正则表达式呢?没有模式。有些函数旨在拆分字符串,因此有人建议为此使用正则表达式引擎,甚至为它辩护,这似乎是一个糟糕的建议。这就像说要在屏幕上打印“hello world”,您应该使用 Zend 框架。
    【解决方案2】:

    如果你真的想创建一个数组,那么使用str_split(),即,

    echo '<pre>'. print_r(str_split("123456", 1), true) .'</pre>'; 
    

    会导致

    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
    )
    

    【讨论】:

      【解决方案3】:

      你的号码可以变成字符串,然后像数组一样操作

      $i = 2342355; $i=(string)$i;
      //or
      $i='234523452435234523452452452';
      
      //then
      
      $i[2]==4
      
      //numeration started from 0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-20
        相关资源
        最近更新 更多