如何使用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)