Jump to content
php.lv forumi

Drukāt masīva elementus, apvienojot līdzīgos


Val

Recommended Posts

Ir masīvs $mas. No šī masīva nepieciešams izdrukāt tā vērtības, apvienojot elementus, kuriem sākums sakrīt līdz mīnuszīmei.

Līdz masīva elementa sadalīšanai pa reizinātājiem tb aaa un 2111 problēmu nav, bet nevaru izdomāt to loģiku. Visādi izmēģinājos: ta neparāda pēdējo skaitli pirms nākamās burtu kombinācijas; ta atkal pirmo skaitli.

 

$mas = array(
0 => 'aaa-2111',
1 => 'aaa-2342',
2 => 'aaa-1532',
3 => 'aaa-1768',

4 => 'bbb-1997',
5 => 'bbb-1653',
6 => 'bbb-1456',
7 => 'bbb-2145',

8 => 'ccc-1401',
9 => 'ccc-1551',
10 => 'ccc-1741',
11 => 'ccc-2145',
);

 

Rezultāts vajadzīgs šāds:

aaa - 2111 2342 1532 1768<br/>
bbb - 1997 1653 1456 2145<br/>
ccc - 1401 1551 1741 2145<br/>

 

Tik tālu tiku

foreach($mas as $key=>$value) {

$temp = explode('-', $value);
$datums = $temp[0];
$laiks = $temp[1];

$temp = explode('-', $mas[$key+1]);
$datums_next = $temp[0];
$laiks_next = $temp[1];

$temp = explode('-', $mas[$key-1]);
$datums_prev = $temp[0];
$laiks_prev = $temp[1];

//te apstājos. visādus salīdzināšanas izmēģināju dažādā secībā...
};

Link to comment
Share on other sites

  • 1 month later...

Tagad bišku līdzīgi. No $mas jāiegūst datumi, kas sagrupēti intervālos tb tikai intervālu galapunkti.

Galarezultāts izskatās šādi: 2007/01/30 - 2007/02/02, 2007/02/20 - 2007/02/22, 2007/02/28

Darboties darbojas, bet uztaisīts čerez Ž... Varbūt kāds var ieteikt izmantot ko citu?

 

Patreizējais kods te: http://paste.php.lv/5759/nonum

Link to comment
Share on other sites

Taisi to vienā ciklā - tad nebūs jocīgas stringu graizīšanas.

Vispirms noskaidro rītdienas datumu tekošajam masīva elementam (to tu jau tur dari). Un ja tas nesakrīt ar nākamo, tad izdrukā $sākums - $beigas, un atceries par $sākums nākamo elementu. Ja sakrīt, tad neko nedrukā. Vēl neliela pārbaude/apstrāde uz pirmo/pēdējo masīva elementu un viss.

Link to comment
Share on other sites

×
×
  • Create New...