Tablica dwuwymiarowa

0

Tworzę dwuwymiarową tablicę. W pierwszym wymiarze trzymam tekst a w drugim liczby. Przy dodawaniu nowego wpisu sprawdzam czy nie istnieje taki. Jeśli nie istnieje to dodaje nowy ale jeśli istnieje to zwiększa liczbę z drugiego wymiaru. Jak to zrobić? Kompletnie nie mam głowy :(

0

Dawaj kod tego co już zrobiłeś...

0

Ale nie mam kodu, na razie tylko odczyt tekstu na ktorym chce działać. Każdy wyraz oddzielony jest przecinkiem.

0

Nie potrzebujesz tablicy dwuwymiarowej. Wystarczy asocjacyjna:

$arr = array('foo' => 1, 'bar' => 1);

if (!isset($arr['foo']))
{
	$arr['foo'] = 1;
}
else
{
	$arr['foo']++;
}
0

Ale problem jest w tym, że tablica ma być tworzona dynamicznie :)

1

Co to znaczy dynamicznie? To nie jest C++.

Jeśli masz na myśli, że będziesz mógł dodawać nowe pozycje, to powyższy kod jest dobry, tylko trzeba go było rozpisać. Np.

function add2arr(&$arr, $name)
{
if (!isset($arr[$name]))
  {
  $arr[$name] = 1;
  }
  else
    {
    $arr[$name]++;
    }
}

$arr = array();
add2arr($arr, 'bidulek');
add2arr($arr, 'bidulek');

add2arr($arr, 'programista');

print_r($arr);

Funkcja add2arr realizuje dodawanie elementu (lub zwiększanie licznika), pod nią masz normalny kod. Możesz go sobie dowolnie modyfikować.

Linijka print_r($arr); to po prostu wypisanie całej tablicy, żeby sprawdzić jak operacje zostały wykonane.

O kod specjalnie prosiłem, żeby się zorientować czy pytający w ogóle się orientuje w temacie...

0

Dzięki wielkie! Mam jednak jeszcze jedno pytanie. Wszędzie opisane jest jak odczytywać elementy z tej tablicy za pomocą foreach. Ja chciałbym po posortowaniu wyświetlić tylko 10 pierwszych. Jak zastosować pętle **for **?

0

Pętla foreach z limitem:

$count = 0;
foreach ($arr as $key => $value)
    {
    if ($count++ == 10) break;
    echo $key.' '.$value.'<br />';
    }
0

Jeśli klucze są numeryczne to możesz użyć for w ten sposób:

for($i=0; $i<11; $i++) {
   echo($tablica[$i] . '<br />');
}

W każdym razie bardziej polecam używanie foreach - jest przejrzystsza.

1 użytkowników online, w tym zalogowanych: 0, gości: 1