小编Ces*_*sar的帖子

用于大型数组的php in_array的替代品,用于避免重复条目

我需要从600k到2000k生成一个大的随机数列表,但列表不能有重复.

我目前的'实施'看起来像这样:

<?php
    header('Content-type: text/plain');
    $startTime = microtime(true);
    $used = array();
    for ($i=0; $i < 600000; ) { 
        $random = mt_rand();
        //if (!in_array($random, $used)) {
        $used[] = $random;
        $i++;
        //}
    }
    $endTime = microtime(true);
    $runningTime = $endTime - $startTime;
    echo 'Running Time: ' . $runningTime;
    //print_r($used);
?>
Run Code Online (Sandbox Code Playgroud)

如果我保持in_array测试评论处理时间大约是1秒,那么mt_rand调用和used数组填充相对"便宜"但是当我取消注释in_array测试时,会发生坏事!(我只是等待 - 已经超过10分钟 - 脚本终止......)

所以我在重复检测方面或生成部分寻找替代方案(如何生成随机数而不存在重复的风险)

我对任何建议持开放态度.

php algorithm optimization performance data-structures

3
推荐指数
2
解决办法
6332
查看次数

我如何测试任何N位中的两个位模式是否不同(位置无关紧要)

假设我有这个位字段值: 10101001

我如何测试任何其他值是否有任何不同n.没有考虑职位?

例:

10101001
10101011 --> 1 bit different 

10101001
10111001 --> 1 bit different

10101001
01101001 --> 2 bits different

10101001
00101011 --> 2 bits different
Run Code Online (Sandbox Code Playgroud)

我需要进行大量的比较,所以我主要是寻找性能,但任何提示都非常受欢迎.

comparison bit

2
推荐指数
2
解决办法
2341
查看次数

是否可以在php中动态定义类属性?

我有一个类定义,如:

class JConfig {
    var $offline = '0';
    var $editor = 'tinymce';
    var $list_limit = '20';
    var $helpurl = 'http://help.joomla.org';
    var $log_path = '/path/to/logs';
    // ....
}
Run Code Online (Sandbox Code Playgroud)

我想动态定义'$ log_path'

我试图在类声明之外定义一个常量,但没有运气

例:

if(!defined('ROOT_PATH')){
    define('ROOT_PATH', dirname(__FILE__));
}
class JConfig {
    var $offline = '0';
    var $editor = 'tinymce';
    var $list_limit = '20';
    var $helpurl = 'http://help.joomla.org';
    var $log_path = ROOT_PATH . '/logs'; // This generates a error
    // ....
}
Run Code Online (Sandbox Code Playgroud)

但我不能这样做,有没有办法实现这一目标?

php class

2
推荐指数
1
解决办法
587
查看次数

如何让Symfony2设置MySQL time_zone?

如何在Symfony2中设置自定义驱动程序选项?

在这种情况下,我想SET time_zone = '-04:30'在MySQL中运行作为连接初始化的一部分.

php mysql timezone symfony doctrine-orm

2
推荐指数
1
解决办法
1918
查看次数

为什么使用union all的查询不起作用

我有以下查询:

SELECT a.status, count(a.status) FROM
(SELECT 'Delivered' AS status
UNION ALL SELECT 'Buffered'
UNION ALL SELECT 'Not Delivered'
UNION ALL SELECT 'Not Reported') a
LEFT JOIN 
bulk_sms_numbers
ON a.status = bulk_sms_numbers.delivery_status
WHERE bulk_sms_id = 52
GROUP BY a.status;
Run Code Online (Sandbox Code Playgroud)

以下结果:

+-----------+-----------------+
|  status   | count(a.status) |
+-----------+-----------------+
| Buffered  |              10 |
| Delivered |            3200 |
+-----------+-----------------+
Run Code Online (Sandbox Code Playgroud)

我希望结果集包含union all查询中列出的所有可能状态

我需要的示例输出.

+---------------+-----------------+
|    status     | count(a.status) |
+---------------+-----------------+
| Buffered      |              10 |
| Delivered     |            3200 |
| Not Delieverd …
Run Code Online (Sandbox Code Playgroud)

mysql sql select

1
推荐指数
1
解决办法
2675
查看次数

将html表单输入限制为某个浮点范围

有没有办法将表单输入字段限制在某个数字范围之间,比方说(0,100)

我在onkeydown事件中过滤输入,只接受数字,问题是我想拒绝一个数字,如果该数字会使输入超出范围

因此,我需要一种方法来查看输入的当前值加上用户按下的键是否会在该范围之间求和.

我试过用:

if((parseFloat(this.value) + parseFloat(String.fromCharCode(e.keyCode)) > 100){
    return false;
}
Run Code Online (Sandbox Code Playgroud)

事情是e.keyCode可以为相同的号码返回不同的代码,现在为数字9返回57,但如果我按下小键盘上的数字则返回105.

有没有办法实现这个目标?

javascript filtering

0
推荐指数
1
解决办法
2948
查看次数

使用preg_split从'你好,你好'到[你好,你好吗]

我想将一个字符串分成两部分,字符串几乎是自由文本,例如:

$string = 'hi how are you';
Run Code Online (Sandbox Code Playgroud)

我希望拆分看起来像这样:

array(
    [0] => hi
    [1] => how are you
)
Run Code Online (Sandbox Code Playgroud)

我尝试使用这个正则表达式:/(\S*)\s*(\.*)/但即使返回的数组大小正确,值也是空的.

使这个有效的模式应该是什么?

php regex pcre

0
推荐指数
1
解决办法
109
查看次数

为什么不能添加这个外键?

我有这个架构:

CREATE TABLE  `lotto`.`combinaciones` (
  `indice` mediumint(8) unsigned NOT NULL,
  `binario` int(10) unsigned NOT NULL,
  PRIMARY KEY  USING BTREE (`indice`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE  `lotto`.`sorteo` (
  `numeroSorteo` int(11) NOT NULL,
  `fechaSorteo` date NOT NULL,
  `precioCarton` double NOT NULL,
  `valorSerial` double NOT NULL,
  `valorMiniserial` double NOT NULL,
  `estatusSorteo` int(11) NOT NULL,
  `cantidadCartones` int(11) NOT NULL,
  PRIMARY KEY  (`numeroSorteo`),
  UNIQUE KEY `fechaSorteo` (`fechaSorteo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE  `lotto`.`cartones` (
  `numeroSorteo` int(11) NOT NULL,
  `serial` mediumint(9) NOT NULL,
  `indice` …
Run Code Online (Sandbox Code Playgroud)

mysql sql constraints foreign-keys

0
推荐指数
1
解决办法
251
查看次数

Sed非贪婪的花括号匹配

我在文件a.txt中有一个字符串

{moslate}alho{/moslate}otra{moslate}a{/moslate}

需要otra使用sed 获取字符串.

有了这个正则表达式

sed 's|{moslate}.*{/moslate}||g' a.txt

a根本没有输出,但是当我添加?到正则表达式时

s|{moslate}.*?{/moslate}||g a.txt

(我在某处读到它使正则表达式非贪婪)我根本得不到匹配,我的意思是得到以下输出

{moslate}alho{/moslate}otra{moslate}a{/moslate}

如何使用sed获得所需的输出?

regex sed non-greedy

0
推荐指数
1
解决办法
7820
查看次数

php块中的mysql_query是否同时进行查询?

我有一个SugarCRM安装.

我的问题是当我在sugarcrm中搜索搜索查询时阻止所有其他查询.

Id      User         Host                   db              Command Time    State   Info
49498   sugar        xx.xx.xx.xx:59568      sugarcrm        Query   5       Sorting result  SELECT leads.id  ,leads_cstm.cedula_c,leads_cstm.numplanilla_c,leads_cstm.profession_c,leads_cstm.b
49502   sugar        xx.xx.xx.xx:59593      sugarcrm        Sleep   5               NULL
Run Code Online (Sandbox Code Playgroud)

正如您所看到的49502,我认为查询ID 是等待查询49498完成的.

第一个查询是一个搜索查询,它持续执行第二个查询的时间是索引页面的查询

奇怪的是,如果我打开两个终端并使用与我的sugarcrm安装相同的用户连接到mysql,我可以同时执行两个查询但是如果我在浏览器中进行搜索并打开一个新选项卡并尝试访问索引页面,第二个选项卡挂起,直到第一个选项卡完成执行或从服务器获得超时.

我使用php作为模块和cgi进行了测试.

所以我想它应该是mysql_query函数本身的东西?

有任何想法吗?优化db(很多表,大量内容)非常困难,但至少该站点应该能够同时使用...

php mysql sql locking

0
推荐指数
1
解决办法
796
查看次数