Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php计算插入MySQL的单词对(字符串)数组_Php_Mysql_Arrays - Fatal编程技术网

如何使用php计算插入MySQL的单词对(字符串)数组

如何使用php计算插入MySQL的单词对(字符串)数组,php,mysql,arrays,Php,Mysql,Arrays,双数组样本 $a=array("a","b","c","d"); $b=array("b","c","d","f"); 我使用for循环来产生这个结果 ab ac ad af bb bc bd bf cb cc cd cf db dc dd df 一个数组$a元素对齐数组$b的一个元素 我想计算这个解的元素 问题是我希望bd和db是一样的,我们知道它出现两次 我如何用php实现它? 在那之后,我将把所有计数解决方案插入MySQL中quick answer-在组合两个元素之前对它们进行排序,然

双数组样本

$a=array("a","b","c","d");
$b=array("b","c","d","f");
我使用for循环来产生这个结果

ab ac ad af bb bc bd bf cb cc cd cf db dc dd df
一个数组$a元素对齐数组$b的一个元素

我想计算这个解的元素 问题是我希望bd和db是一样的,我们知道它出现两次 我如何用php实现它?
在那之后,我将把所有计数解决方案插入MySQL中

quick answer-在组合两个元素之前对它们进行排序,然后检查它们是否已经存在于答案集中

$a=array("a","b","c","d");
$b=array("b","c","d","f");

$res = array();
foreach($a as $v1) {
  foreach($b as $v2) {
    $t = array($v1, $v2);
    asort($t);
    $val = implode('', $t);
    if(!in_array($val, $res))
      $res[] = $val;
  }
}
print_r($res);

快速回答-在组合两个元素之前对它们进行排序,然后检查它们是否已经存在于答案集中

$a=array("a","b","c","d");
$b=array("b","c","d","f");

$res = array();
foreach($a as $v1) {
  foreach($b as $v2) {
    $t = array($v1, $v2);
    asort($t);
    $val = implode('', $t);
    if(!in_array($val, $res))
      $res[] = $val;
  }
}
print_r($res);

更好的算法是只生成for循环末尾的有效字符串

让我先解释一下

$a=数组(“a”、“b”、“c”、“d”)

$b=数组(“b”、“c”、“d”、“f”)

$x=阵列差异($a,$b)//X将只有元素“a”

$y=array\u uintersect()//检查语法。将为您提供匹配的“b”“c”“d”

在您使用的forloop中,使用$x而不是$a

这将产生以下结果“ab ac ad af”

$y有火柴。所以你可以利用它来制作“bb”,“cc”,“dd”


如果只需要count,那么您想要的答案是count(matches)+for循环的结果。

更好的算法是只生成for循环末尾的有效字符串

让我先解释一下

$a=数组(“a”、“b”、“c”、“d”)

$b=数组(“b”、“c”、“d”、“f”)

$x=阵列差异($a,$b)//X将只有元素“a”

$y=array\u uintersect()//检查语法。将为您提供匹配的“b”“c”“d”

在您使用的forloop中,使用$x而不是$a

这将产生以下结果“ab ac ad af”

$y有火柴。所以你可以利用它来制作“bb”,“cc”,“dd”

如果您想单独计数,那么您想要的答案是计数(匹配)+for循环的结果。

尝试以下方法:

$a = array("a", "b", "c", "d");
$b = array("b", "c", "d", "f");

sort($a);
sort($b);

$result = [];
for ($i = 0; $i < count($a); $i++) {
    for ($j = 0; $j < (count($b)); $j++) {
        if ($b[$j] < $a[$i]) {
            continue;
        }
        $result[] = $a[$i] . $b[$j];
    }
}

$result = array_unique($result, SORT_STRING);
var_dump($result);
$a=数组(“a”、“b”、“c”、“d”);
$b=数组(“b”、“c”、“d”、“f”);
排序(a美元);
分类(乙元);;
$result=[];
对于($i=0;$i
试试这个:

$a = array("a", "b", "c", "d");
$b = array("b", "c", "d", "f");

sort($a);
sort($b);

$result = [];
for ($i = 0; $i < count($a); $i++) {
    for ($j = 0; $j < (count($b)); $j++) {
        if ($b[$j] < $a[$i]) {
            continue;
        }
        $result[] = $a[$i] . $b[$j];
    }
}

$result = array_unique($result, SORT_STRING);
var_dump($result);
$a=数组(“a”、“b”、“c”、“d”);
$b=数组(“b”、“c”、“d”、“f”);
排序(a美元);
分类(乙元);;
$result=[];
对于($i=0;$i
我的解决方案是:

 <?php
$a=array("a","b","c","d");
$b=array("b","c","d","f");
$c=array();
$d=array();
$ii=0;
foreach($a as $dat){
    if(!isset($c[$dat])){
        $c[$dat]=$ii;
        $ii++;
    }
}
foreach($b as $dat){
    if(!isset($c[$dat])){
        $c[$dat]=$ii;
        $ii++;
    }
}
$count=0;
for ($i = 0; $i < count($a); $i++) {
    for ($j = 0; $j < (count($b)); $j++) {
        if(!isset($d[$c[$a[$i]]][$c[$b[$j]]])){
            echo $a[$i].$b[$j]."<br/>";
            $d[$c[$a[$i]]][$c[$b[$j]]]=1;
            $d[$c[$b[$j]]][$c[$a[$i]]]=1;
            $count++;
        }
    }
}
echo "The count is: ".$count;

?>

我的解决方案是:

 <?php
$a=array("a","b","c","d");
$b=array("b","c","d","f");
$c=array();
$d=array();
$ii=0;
foreach($a as $dat){
    if(!isset($c[$dat])){
        $c[$dat]=$ii;
        $ii++;
    }
}
foreach($b as $dat){
    if(!isset($c[$dat])){
        $c[$dat]=$ii;
        $ii++;
    }
}
$count=0;
for ($i = 0; $i < count($a); $i++) {
    for ($j = 0; $j < (count($b)); $j++) {
        if(!isset($d[$c[$a[$i]]][$c[$b[$j]]])){
            echo $a[$i].$b[$j]."<br/>";
            $d[$c[$a[$i]]][$c[$b[$j]]]=1;
            $d[$c[$b[$j]]][$c[$a[$i]]]=1;
            $count++;
        }
    }
}
echo "The count is: ".$count;

?>


你想让db和bd算作一样的东西,这意味着cd和dc两个?等等或者这是输入,只有bd和db,这就是全部。bd和db计算为同一事物,cd和dc也计算为同一事物。对它们进行排序,然后查看它们是否在结果数组中。您希望db和bd计算为同一事物,这意味着cd和dc两个?等等或者这是输入,只有bd和db,这就是全部。bd和db计数相同,cd和dc也一样。对它们进行排序,然后查看它们是否在结果数组中。这不起作用,脚本的结果是:数组(6){[0]=>string(2)“bb”[1]=>string(2)“cb”[2]=>string(2)“cc”[3]=>string(2)“db”[4]=>string(2)“dc”[5]=>string(2) “dd”}“ab”是解决方案,不包含在其中。$result显示唯一数组以及如何在数组_unique()之前或之后计数?@lcjury抱歉,它应该是
$b[$i]<$a[$j]
但不是
$a[$i]<$b[$j]
。修复了。@FrederickZhang仍然错误,它将返回重复的结果@黃一航 如果您只需要数字,那么
$result
就不需要了。只需将
array\u unique
应用于两个原始数组,然后
number=C[x=count(a),y=count(b)]=(x!)/(y!(x-y)!(x>=y)
这不起作用,脚本的结果是:数组(6){[0]=>string(2)“bb”[1]=>string(2)“cb”[2]=>string(2)“cc”[3] =>string(2)“db”[4]=>string(2)“dc”[5]=>string(2)“dd”}“ab”是解决方案,不包括在其中。$result显示唯一数组以及如何在数组_unique()之前或之后计算数字?@lcjury抱歉,它应该是
$b[$i]<$a[$j]
但不是
$a[$i]<$b[$j]
。修复。@FrederickZhang仍然错误,它将返回重复的结果@黃一航 如果只需要数字,则不需要
$result
。只需将
array\u unique
应用于两个原始数组,然后
number=C[x=count(a),y=count(b)]=(x!)/(y!(x-y)!(x>=y)