Topic: Darbas su masyvu

Sveiki, turiu tokį klausimą.

Aš turiu dvimatį masyvą:

indexas i 0 1 2 3 4 5
--------------------------
reiksme0:2 3 6 3 9 2
reiksme1:7 8 6 1 3 7

Klausimas, kaip 3 stulpeli perkelti i galą? Kad būtų toks masyvas.

indexas i 0 1 2 3 4 5
--------------------------
reiksme0:2 3 3 9 2 6
reiksme1:7 8 1 3 7 6

Ačiū.

Re: Darbas su masyvu

pasinaudok kad ir foreach ciklu ir persikelk i nauja masyva su reikiamais indeksais....

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Darbas su masyvu

O gal būtų galima kokį nors paprasta pavyzduka su foreach  cikliuku kaip perkelti į gala 3 eilute? Nes foreach prabega pro visus masyvo indeksus.

Ačiū labai

Re: Darbas su masyvu

bifis wrote:

Klausimas, kaip 3 stulpeli perkelti i galą? Kad būtų toks masyvas.

Parodyk pirma, kaip atrodo tas tas dvimatis masyvas (-;

Taip?:

array(
1 => array(1,2,3),
2 => array(2,3,4),
3 => array(3,4,5)
)

Ar kaip nors kitaip.

Ir klausimas: ar moki elementarias operacijas su masyvais: gauti reikšmę, suskaičiuoti, kiek masyve yra elementų, priskirti reikšmę?

Re: Darbas su masyvu

Jis atrodo taip:

1,1,1,1,1,3
2,1,1,1,2,2
3,1,1,2,1,3
4,1,1,2,2,1
5,1,2,1,1,3
Ir man reikia kad antras stulpelis atsidurtu gale.

Re: Darbas su masyvu

Aš klausiu, kaip jis fiziškai aprašytas PHP programoje.

Re: Darbas su masyvu

siaip pagal pavyzdi tiktu toks skriptukas:

foreach ($masyvas as $key=>$value){
   $naujas_masyvas[$key][0] = $value[0];
   $naujas_masyvas[$key][1] = $value[1];
   $naujas_masyvas[$key][2] = $value[3];
   $naujas_masyvas[$key][3] = $value[4];
   $naujas_masyvas[$key][4] = $value[2];
}

aisku gal galima gal ir graziau :)

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Darbas su masyvu

Matai žygi, čia priklauso, kaip pas jį tas masyvas yra suformuotas.

Jeigu tarkim su pieštuku ant popieriaus nupaišyti masyvą, tai logiška, kad stulpeliai yra viršuje ir eina didėjimo tvarka nuo kairės iki dešinės... tačiau kompiuteryje juk mes galima laikyti, kad stulpelis yra elementas, pasiekiamas per indeksą (pasuktas nuo to, ką paišytume ant popieriaus). Tokiu atveju ir operacijos būtų labai paprastis (dvi priskyrimo operacijos).

Re: Darbas su masyvu

Pas mane masyvo elemtai isrikiuoti didejimo tvarka nuo [0..6] taip pat eilutes nuo [0..5].

Re: Darbas su masyvu

bifis wrote:

Pas mane masyvo elemtai isrikiuoti didejimo tvarka nuo [0..6] taip pat eilutes nuo [0..5].

Tai parodyk:

print_r($masyvas);

11 (edited by regina 2011-02-23 10:01:40)

Re: Darbas su masyvu

Sveiki. Situcija:

$masyvas = array(1, 2, 2, 3, 4, 4, 5);

foreach ($masyvas as $nr => $reiksme) {
    echo "$nr - $reiksme<br />";
}

Gauname tai:

0 - 1
1 - 2
2 - 2
3 - 3
4 - 4
5 - 4
6 - 5

Gal kas ant kelio užvestų, kaip maždaug padaryti, kad masyvą sunumeruotą gautumėm taip:

0 - 1
1 - 2
1 - 2
2 - 3
3 - 4
3 - 4
4 - 5

Ačiū.

Re: Darbas su masyvu

O kaip tu įsivaizduoji darbą sy besidubliuojančiais masyvo indeksus? (-;

Re: Darbas su masyvu

As tai sakyciau zmogus nelabai suprato ka jis issivede ir siaip nelabai supranta kas yra masyvai.

Re: Darbas su masyvu

Taip, jūs teisūs, nesuprantu. Kaip suindeksuoti (jei tai įmanoma) masyvą?

Re: Darbas su masyvu

Ar nebūtų paprasčiau pasakyti ką tamsta iš vis darote?
Nes apie ką jūs čia šnekate yra magija. O programavime magijos dėsniai negalioja.. :)

Re: Darbas su masyvu

regina: yra toks paprastas dalyakas - masyve negali būti du vienodi indeksai. Taškas. Todėl turi galvoti kitą kelią, kaip išspręsti uždavinį su turimomu funkcionalumu ir resursais. Gal tau užteks dvimačio masyvo, bet kas ten žino...

Re: Darbas su masyvu

$a = mysql_query("select taskai from rezultatai order by taskai desc"); //lentele su rezultatais, užklausa ištraukia taškus nuo didžiausio iki mažiausio (5, 4, 4, 4, 3, 2, 2, 2, 2, 1)
$b = mysql_num_rows($a);

$nr = range(1, 10); //masyvas nuo 1 iki 10

for ($i=0; $i<$b; $i++) {
$rikiuoti = mysql_fetch_array($a);
echo "".$nr[$i]." - ".$rikiuoti['taskai']."<br />";
}

Rezultatas:

1 - 5
2 - 4
3 - 4
4 - 4
5 - 3
6 - 2
7 - 2
8 - 2
9 - 2
10 - 1

Reikia gauti:

1 - 5
2 - 4
2 - 4
2 - 4
3 - 3
4 - 2
4 - 2
4 - 2
4 - 2
5 - 1

Ar įmanoma taip padaryti? Jei taip, tai kaip? šiaip galvoju apie iš duomenų bazės ištrauktų rezultatų patikrinimą, ar tarp jų yra pasikartojančių skaičių ar ne. Tai žinant galbūt būtų galima sąlygos pagalba kažką padaryt...

Re: Darbas su masyvu

Tai reikėjo iš kart žmoniškai rašyti klausimą - kaip atvaizduoti varžybų rezultatus, atsižvelgiant kad kelios komandos gali surinkti vienodai taškų.

tada ir logika visai kitokia

$a = mysql_query("select taskai from rezultatai order by taskai desc"); //lentele su rezultatais, užklausa ištraukia taškus nuo didžiausio iki mažiausio (5, 4, 4, 4, 3, 2, 2, 2, 2, 1)
$b = mysql_num_rows($a);

$current = 0;
$count = 0;
$pos = 0;

while ($row = mysql_fetch_array($a)){
  if ($row['taskai'] !== $current){
    echo str_repeat ("$pos - $current <br/>", $count);
    $pos += $current;
    $current = $row['taskai'];
    $count = 1;
  }else {
    $count++;
  }
}

kodas tiesiai is galvos, jei neveiks, tikiuosi mokesi pasitaisyti.

Re: Darbas su masyvu

Prisitaikiau, veikia. Dėkui. Tik yra viena bėda, kažkodėl paskutinio elemento neatspausdina. Tarkim, jei viso turiu 10 gautų elementų, atspausdina tik 9. Nesuprantu kodėl...

20 (edited by xeranas 2011-02-24 00:36:34)

Re: Darbas su masyvu

regina wrote:

Tik yra viena bėda, kažkodėl paskutinio elemento neatspausdina. Tarkim, jei viso turiu 10 gautų elementų, atspausdina tik 9. Nesuprantu kodėl...

Papastink kaip atrodo pas tave ciklas

No warning? No action? I hate this situation!