Сложно организиране на масиви

Pavkatar

Registered
Здравейте колеги,
имам следния случай:
Търся от бд и при намиране на резултати искам да запиша в масив всички намерени ИДита.
При следващо търсене със други критерии намираме други резултати, но някой съвпадат със първите. Искам да се увеличи масива със всички резултати, без да се повтарят, и при намиране на резултат, намерен при първото търсене, в друг масив да си увеличава бройка, която да отговаря на съвпадинията. :(
И накрая да се подреди масива по съвпадения, но това мисля че ще си го направя :)
Супер сложно стана ... Дано да сте ме разбрали :lol:
 
Май това искаш :) :

<?php

$array1 = array(1, 2, 4, 9, 9);
$array2 = array(1, 2, 2, 4, 4, 4, 9, 9, 9, 9);

$sorted = $result = array();

foreach (array_merge($array1, $array2/*, $arrayN*/) as $v){
if(empty($sorted[$v])){
$sorted[$v] = 0;
}
++$sorted[$v];
}

arsort($sorted);

//echo '<pre>';
//print_r($sorted);

foreach (array_keys($sorted) as $v){
$result[] = $v;
}

echo '<pre>';
print_r($result);
die;

?>


Array
(
[0] => 9 // 6 съвпадения
[1] => 4 // 4 съвпадения
[2] => 2 // 3 съвпадения
[3] => 1 // 2 съвпадения
)
 
Ето и един вариант от мен:
<?php
header("Content-type:text/html; charset=windows-1251");
$BD1 = array(1,3,6,7,8,9,11,13,14,16); //първите ID-та от база-данни
$BD2 = array(2,3,3,5,7,8,10,12,14,15); //вторите ID-та от база-данни
$array = array(); //масива, в който ще се записва кое id, колко пъти се повтаря
$current_id = 0;
foreach(array_merge($BD1, $BD2) as $current){
if (array_key_exists($current, $array)) {
empty($array[$current]) ? $array[$current]=1:$array[$current]++;
} else {
$array[$current]=1;
}
}
natsort($array);
$array = array_reverse($array, true);
foreach ($array as $key=>$q){
echo "ID $key=>Повторения:$q<br />";
}
?>
Такива теми са хубави, защото те карат наистина да си напрегнеш мозъка! :D
P.S. Аз даже се учудих къде е @Hunter?Той обича по принцип тези "гатанки" и там е много силен! :)
 
Pavkatar каза:
Здравейте колеги,
имам следния случай:
Търся от бд и при намиране на резултати искам да запиша в масив всички намерени ИДита.
При следващо търсене със други критерии намираме други резултати, но някой съвпадат със първите. Искам да се увеличи масива със всички резултати, без да се повтарят, и при намиране на резултат, намерен при първото търсене, в друг масив да си увеличава бройка, която да отговаря на съвпадинията. :(
И накрая да се подреди масива по съвпадения, но това мисля че ще си го направя :)
Супер сложно стана ... Дано да сте ме разбрали :lol:

http://php.net/manual/en/function.array-merge.php +
http://php.net/manual/en/function.array-count-values.php +
http://php.net/manual/en/function.array-unique.php = :?:

:)
 
малииии, това array_count_values колко работа спестява.
<?php
header("Content-type:text/html; charset=windows-1251");
$BD1 = array(1,3,6,7,8,9,11,13,14,16); //първите ID-та от база-данни
$BD2 = array(2,3,3,5,7,8,10,12,14,15); //вторите ID-та от база-данни
$array = array(); //масива, в който ще се записва кое id, колко пъти се повтаря
$current_id = 0;
$array = array_count_values(array_merge($BD1, $BD2));
natsort($array);
$array = array_reverse($array, true);

foreach ($array as $key=>$q){
echo "ID $key=>Повторения:$q<br />";
}
?>
 
Малииий, хора обичам виииии :twisted: Идея си нямате от колко време го мъча това :D Ама като незнам array функциите така е .... :D Мерси Мнооооого!
emagi получава съпортта :?: , но голямо мерси на всики :?:
 

Back
Горе