小编Alm*_* Do的帖子

获得可能的阵列组合

所以,

问题

从SQL我得到一个带字符串的数组(平面数组) - 让它成为

$rgData = ['foo', 'bar', 'baz', 'bee', 'feo'];

现在,我希望得到这个数组的对和三元组的可能组合(并且,通常情况下,4个元素的组合e tc).更具体一点:我的意思是数学意义上的组合(没有重复),即那些计数等于的组合

在此输入图像描述

- 对于上面的数组,对于对和三元组都是10.

我的方法

我从映射可能的值开始 在此输入图像描述可能的数组选定项目.我目前的解决方案是指出一个元素被选为"1",否则为"0".对于上面的示例,将是:

foo bar baz bee feo
 0   0   1   1   1   -> [baz, bee, feo]
 0   1   0   1   1   -> [bar, bee, feo]
 0   1   1   0   1   -> [bar, baz, feo]
 0   1   1   1   0   -> [bar, baz, bee]
 1   0   0   1   1   -> [foo, bee, feo]
 1   0   1   0   1   -> [foo, baz, feo] …

php arrays algorithm combinations

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

向多态表添加多个索引的最佳方法是什么

假设我有与此类似的多态

| document_id | owner_type | owner_id |
| 1           | Client     | 1        |
| 1           | Client     | 2        |
| 2           | User       | 1        |
Run Code Online (Sandbox Code Playgroud)

我知道我会调用查询来寻找owner_typeowner_type+owner_id

SELECT * FROM document_name_ownerships WHERE owner_type = 'Client`
SELECT * FROM document_name_ownerships WHERE owner_type = 'Client` and owner_id = 1
Run Code Online (Sandbox Code Playgroud)

让我们忽略如何索引document_id 我想知道在此 SQL 场景中索引所有者列的最佳方式(性能)是什么

解决方案1:

CREATE INDEX do_type_id_ix ON document_ownerships (owner_type, owner_id)
Run Code Online (Sandbox Code Playgroud)

这样我就只有一个适用于这两种情况的索引

解决方案2:

CREATE INDEX do_id_type_ix ON document_ownerships (owner_id, owner_type)
CREATE INDEX do_type_ix …
Run Code Online (Sandbox Code Playgroud)

mysql sql indexing

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

如何为mysql中的字段提供自动编号?

我想为MySQL数据库中的字段提供自动编号?

这就像

我有字段名称,编号

name       number
--------------------
aaaa          1
bbbb          2
cccc          3
dddd          4
eeee          5

现在我要删除第3个字段(即cccc)删除后,如果我选择了该表中的所有行,我希望得到输出像

name      number
-----------------------
aaaa        1
bbbb        2
dddd        3
eeee        4

谁能为此提供更好的解决方案?

mysql

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

使用一次循环将平面数组转换为树

所以,

问题

假设我们有平面阵列,结构如下:

$array = [
  ['level'=>1, 'name' => 'Root #1'],
  ['level'=>1, 'name' => 'Root #2'],
  ['level'=>2, 'name' => 'subroot 2-1'],
  ['level'=>3, 'name' => '__subroot 2-1/1'],
  ['level'=>2, 'name' => 'subroot 2-2'],
  ['level'=>1, 'name' => 'Root #3']
];
Run Code Online (Sandbox Code Playgroud)

问题是 - 转换该数组,使其成为一棵树.仅通过元素顺序和level字段确定从属.让我们定义children为存储子节点的维度名称.对于上面的数组将是:

  array (
    array (
      'level' => 1,
      'name' => 'Root #1',
    ),
    array (
      'level' => 1,
      'name' => 'Root #2',
      'children' => 
      array (
        array (
          'level' => 2,
          'name' => 'subroot 2-1',
          'children' = …

php arrays tree

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

在PHPDoc中提示严格类型实体的迭代器

细节

  • 我正在使用PHPStorm 8 IDE.
  • 假设我们有一些Foo实现\Iterator接口的类,我们知道迭代器中的所有项都是class的实例Bar.

如何提示它Foo是可迭代的并且只包含Bar?当然,提示应该保留信息,这是它的实例Foo

到目前为止我尝试了什么

如果我们有一个数组Bar的情况下,那么这是一件容易的事情(它的描述,例如,在这个问题)Bar[].此外,如果意图是迭代Foo,它仍然可以解决(或多或少):

//assume that $foo is instance of Foo
//..

/* @var $object Bar */
foreach ($foo as $object) {
}
Run Code Online (Sandbox Code Playgroud)

但是,有一个非常重要的事情是使用就地提示无法实现的:返回类型.如果我有一些应该返回的方法Foo,我只知道如何提示Foo,但该函数的用户仍然无法公开,它实际上是可迭代的并且包含Bar实例(就像我指定的那样)@return Bar[]如果是Bar实例数组)

php phpdoc

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

SSL:400 没有发送所需的证书

代码和输入

我正在尝试建立 SSL 连接,但收到400 No required SSL certificate was sent了服务器的响应。我正在以标准方式执行此操作,例如此处描述的那样;我运行 Java 8。

我的代码示例是:

    OkHttpClient client     = new OkHttpClient();
    KeyStore keyStoreClient = getClientKeyStore();
    KeyStore keyStoreServer = getServerKeyStore();
    String algorithm        = ALGO_DEFAULT;//this is defined as "PKIX"

    KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(algorithm);
    keyManagerFactory.init(keyStoreClient, PASSWORD_SERVER.toCharArray());

    SSLContext sslContext = SSLContext.getInstance("TLS");

    TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(algorithm);
    trustManagerFactory.init(keyStoreServer);

    sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom());

    client.setSslSocketFactory(sslContext.getSocketFactory());
    client.setConnectTimeout(32, TimeUnit.SECONDS); // connect timeout
    client.setReadTimeout(32, TimeUnit.SECONDS);    // socket timeout

    return client;
Run Code Online (Sandbox Code Playgroud)

这是我用来发送 GET 请求的代码:

public String get(String url) throws IOException
{ …
Run Code Online (Sandbox Code Playgroud)

java oracle ssl

5
推荐指数
1
解决办法
3万
查看次数

生成可预测的随机数组

所以,

问题

众所周知,伪随机数."伪"实际上意味着,尽管它们通常是随机的(即不可预测的),但它们仍然是相同的,其中使用相同的生成器初始值.例如,在PHP中有mt_srand()函数来做到这一点.例:

mt_srand(1);
var_dump(mt_rand(), mt_rand(), mt_rand());
Run Code Online (Sandbox Code Playgroud)

- 无论如何,我们将启动我们的脚本多少次:生成的三个数字将始终相同.

现在,我的问题是如何做同样的事情 - 但是为了改组数组.即我想创建一个函数,它将接受输入数组以随机播种播种.在相同的种子值内,洗牌必须具有连续的相同顺序.即让我们调用该函数shuffleWithSeed()- 然后跟随应该适用于每个脚本启动:

$input = ['foo', 'bar', 'baz'];
$test  = shuffleWithSeed($input, 1000);//1000 is just some constant value
var_dump($test); //let it be ['bar', 'foo', 'baz']
$test  = shuffleWithSeed($test, 1000); 
var_dump($test); //let it be ['baz', 'foo', 'bar']
$test  = shuffleWithSeed($test, 1000); 
var_dump($test); //let it be ['baz', 'bar', 'foo']
//...
Run Code Online (Sandbox Code Playgroud)

-ie无论我们多少次为我们的数组进行洗牌 - 我希望下一个脚本启动顺序序列在一个seed值内总是相同的.

我的方法

我记得这个算法:

  1. 通过初始化随机数生成器 seed
  2. 生成N随机数,其中N …

php arrays random algorithm

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

MySQL TIMEDIFF 负值

我在使用 TIMEDIFF 和两个不同的日期时遇到问题。以下查询“应该”返回 00:04:51

mysql> SELECT TIMEDIFF(TIME('2013-07-21 00:04:50'),TIME('2013-07-20 23:59:59'));
+-------------------------------------------------------------------+

|TIMEDIFF(TIME('2013-07-21 00:04:50'),TIME('2013-07-20 23:59:59')) |

+-------------------------------------------------------------------+

| -23:55:09                                                         |

+-------------------------------------------------------------------+

1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

有小费吗?哪种方法最简单?谢谢

mysql

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

带别名的动态命名空间类

所以,

我在使用命名空间创建动态对象时遇到问题.这是命名空间代码:

namespace Foo
{
   class Bar
   {
   }
}
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试创建类的对象Bar:

include('namespace.php');
$sName  = 'Bar';
$sClass = '\\Foo\\'.$sName;
$rObj   = new $sClass; //correct object
Run Code Online (Sandbox Code Playgroud)

一切顺利.但是,现在我想使用别名并执行以下操作:

include('namespace.php');
use Foo as Baz;
$sName  = 'Bar';
$sClass0= '\\Foo\\'.$sName;
$sClass1= '\\Baz\\'.$sName;
$rObj   = new $sClass0; //correct object
$rObj   = new $sClass1; //Fatal error
Run Code Online (Sandbox Code Playgroud)

而且我无法以这种方式实例化对象(并且通过全名访问仍然可以正常工作).所以,我的问题是 - 是否有可能通过别名以某种方式访问​​该类,如果是,如何?我还试图在使用时访问$sClass1='Baz\\'.$sName- 没有成功.另外,我通过get_declared_classes()函数检查了声明的类,它表明我只有\Foo\Bar类(没有引用别名).

我不确定它是否重要,但我使用的是PHP 5.5版本.

php namespaces

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

array_sum在PHP中使用什么算法?

数组和使用什么算法使它比一些循环更快?

是前缀sum/suffix sum还是其他什么?

php arrays algorithm php-internals

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

PHP保护java风格

我有一些功能需要由管理我的软件的一个共同方面的几个类共享.在Java中,我将所有这些类放在同一个包中,并且通用功能将在辅助类中的受保护方法中.

在PHP中,受保护的方法意味着您只能在子类中使用它,因此我当前的解决方案是使方法受到保护,并使所有需要此方法的类扩展帮助程序类.我当前的解决方案的问题是,事实上你不能继承多个类,所以让我说我需要帮助类,即时通讯...

那么,有没有办法让方法可见性与PHP中的java保护相媲美?如果没有,任何更清洁的方法来解决我的问题?

php oop

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

PHP isset:这是多余的吗?

提交表单后,我总是检查表单是否正确isset,然后检查是否所有字段都是isset

这是我的php代码:

if(isset($_POST)) {
  if(isset($_POST['username'], $_POST['password'])) {
    // process
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我的第一次检查isset是表单本身是否已提交,然后再次检查每个表单input是否isset或如果我使用的时刻

if(isset($_POST)) { }

它会实际检查该表单中的字段吗?

我希望你事先得到我的意见.

php forms isset

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

我怎么能在浮点后只显示一位数

$f = sprintf ("%.1f",$per);
echo "You hit".$f."
Run Code Online (Sandbox Code Playgroud)

通过这段代码我可以在浮点后只显示一位数.但是当我的结果是100%时,它显示100.0%.我想100%显示.我怎么能这样做????

php floating

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