Как с помощью php подсчитать вставку массива пар слов (строк) в MySQL

образец двух массивов

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

и я использую цикл для получения этого результата

ab ac ad af bb bc bd bf cb cc cd cf db dc dd df

один массив $ a element выровнять элемент массива $ b

и я хочу посчитать элемент этого решения
проблема в том, что я хочу bd и db как одно и то же, мы узнаем, что они появляются два раза
Как я могу сделать это в PHP?
после этого я запишу все решения для подсчета в MySQL

0

Решение

быстрый ответ — отсортируйте два элемента, прежде чем объединить их, а затем проверьте, существуют ли они уже в наборе ответов.

$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);
2

Другие решения

Лучшим алгоритмом было бы создание только допустимых строк в конце цикла for.

Позвольте мне объяснить раньше.

$ А = массив ( «а», «б», «в», «г»);

$ Ь = массив ( «б», «в», «г», «е»);

$ Х = array_diff ($ а, $ б); // X будет иметь только элементы «a».

$ y = array_uintersect () // Проверка синтаксиса. даст вам спички «b» «c» «d»

В используемом forloop используйте $ x вместо $ a.

Это приведет к следующему результату «ab ac ad af»

И у $ y есть спички. Таким образом, вы можете использовать его для создания «bb», «cc», «dd»

Если вы хотите рассчитывать в одиночку, то ответ, который вы хотите, это считать (совпадения) + результат вашего цикла for.

1

Мое решение:

 <?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;

?>
1

Попробуй это:

$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);
1
$a=array("a","b","c","d");
$b=array("b","c","d","f");
$y=array_intersect($a,$b);
print_r ($y);
$req=count($a)*count($b) - count($y);//13
echo $req;
1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector