Jump to content
  • 0

ostatní Sloučení Dvou Polí


chocholda

Dotaz

Zdravím..

 

Řeším tady jeden problém.. Potřeboval bych poradit, jak sloučit dvě pole? Respektive stringy:

 

Mám dvě proměnné $a a $b: Obě proměnné jsou stringy, a obě zapsané ve tvaru id:počet,id:počet,id:počet ...

 

Čili pomocí funkce explode(",",$a); je možné z každé z těch proměnných udělat pole, kde každý prvek bude id:počet, čili třeba: 5:2

 

A já bych potřeboval, aby to sloučilo tyhle dvě pole (nebo proměnné, to je jedno, stejně bych to pak zase převedl na string) podle id..

 

 

čili například pokud:

$a = 2:2,4:15,33:2,20:1

$b = 1:1,3:4,2:1,20:5

tak aby mi to z toho udělalo:

$c = 1:1,2:3,3:4,4:15,20:6,33:2

 

(snad barvy pomůžou v orientaci :) )

 

 

 

 

Předěm díky, pokud někdo pomůžete a poradíte ;)

chochy

 

CHtěl bych poprosit někoho z moderátorů, aby to přesunul do sekce Help.. Omylem jsem to dal sem.. Díky

Link to comment
Share on other sites

4 odpovědí na tuto otázku

Recommended Posts

  • 0

jak funguje emplode a implude vím..

 

Ale pochybuju že array_merge pomůže, protože já nepotřebuju sloužit ty 2 pole podle indexu, ale podle dalo by se říct prvního ze dvou čísel co v tam jsou..

 

tj když pomocí explode rozělím to pole, tak budu mít pole například:

2:15

5:1

4:4

 

atd, a já potřebuju aby to sečetlo to druhé číslo, pokud bude to první číslo stejné jako některé z dalšího pole, tj když v druhým pole bude taky něco s hodnoutou která je už v prvním poli. Trochu jsem se do toho zamotal, ale prostě pokud první čislo bude stejné v obou polích, tak to sečte to druhé číslo, a uloží do dalšího pole..

Link to comment
Share on other sites

  • 0

jednoduše přes foreach...

 

<?php
$a = '2:2,4:15,3:2,20:1';
$b = '1:1,3:4,2:1,20:5';

$aa = string2array($a);
$ab = string2array($;

$slouceni = array();
foreach($aa as $key => $val) {
   $slouceni[$key] = $val;
   if(isset($ab[$key]))
       $slouceni[$key] += $ab[$key];
}
foreach($ab as $key => $val) {
   if(!isset($slouceni[$key]))
       $slouceni[$key] = $val;
}
ksort($slouceni); // seřazení klíčů od nejnižšího po nejvyšší

function string2array($string) {
   $expl = explode(',', $string);
   $arr = array();
   foreach($expl as $ex) {
       $tmp = explode(':', $ex);
        $arr[$tmp[0]] = $tmp[1];
   }
   return $arr;
}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...