Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Numerowanie elementów tablicy wielowymiarowej
Forum PHP.pl > Forum > Przedszkole
Janek85
Witajcie,

Od paru dni nie mogę sobie poradzić z ponumerowaniem elementów tablicy wielowymiarowej.

mam taką tablice:

  1. $tablica = array($index1 => array( $index2 => '0'));



index1 jest unikalny i przypisany tylko do jednego index2, wszystkich wierszy jest n.

index2 nie jest unikalny, chciał bym zliczyć wystąpienia index2 i ponumerować index2 w obrębie każdego wystąpienie, przykład :

  1. array( x => '1',
  2. x => '2',
  3. x => '3',
  4. y => '1',
  5. z => '1',
  6. z => '2',
  7. z => '3',
  8. z => '4');


Dla jednowymiarowej tablicy udało mi się to zrobić, natomiast muszę mieć powiązanie index2 z index1, stąd tablica wielowymiarowa.
Może są jakieś inne sposoby żeby zliczyć w ten sposób elementy tablic ?

Z góry dziękuję za pomoc.
b4rt3kk
Nie do końca rozumiem co masz na myśli, natomiast:

  1. array( x => '1',
  2. x => '2',
  3. x => '3',
  4. y => '1',
  5. z => '1',
  6. z => '2',
  7. z => '3',
  8. z => '4');


Powoduje nadpisywanie indeksów przez kolejne wartości. Klucze nie mogą się powtarzać w obrębie jednej tablicy.
Janek85
Cytat(b4rt3kk @ 24.06.2013, 10:01:13 ) *
Nie do końca rozumiem co masz na myśli, natomiast:

  1. array( x => '1',
  2. x => '2',
  3. x => '3',
  4. y => '1',
  5. z => '1',
  6. z => '2',
  7. z => '3',
  8. z => '4');


Powoduje nadpisywanie indeksów przez kolejne wartości. Klucze nie mogą się powtarzać w obrębie jednej tablicy.


Masz racje wartości powinienem zapisać odwrotnie.


Inaczej,

mając tablicę:

  1. $tablica = array(index1 => index2);



index1 jest unikalny i jest traktowany jako klucz tablicy. Index2 nie jest unikalny dlatego muszę zliczyć jego wystąpienia i w obrębie jednego wystąpienia dodać do niego autonumer.

Reasumując mamy coś takiego:

  1. $tablica = array( 'q' => 'q',
  2. 'a' => 'q',
  3. 's' => 'q',
  4. 'd' => 'f',
  5. 't' => 'f',);



A potrzebujemy coś takiego:

  1. $tablica = array( 'q' => 'q1',
  2. 'a' => 'q2',
  3. 's' => 'q3',
  4. 'd' => 'f1',
  5. 't' => 'f2',);



Tabica wielowymiarowa wzięła się stąd, że myślałem żeby dodać wymiar który był by tym autonumerem, natomiast docelowy efekt musi być jw.
b4rt3kk
Może coś takiego?

  1. $myArray(); // Twoja tablica
  2. $countValues = array_count_values($myArray); // zliczamy powtórzenia
  3.  
  4. foreach ($countValues as $key => $count) {
  5.  
  6. if ($count > 1) { // jeśli interesuje Cie dodanie indeksów tylko do wartości występujących więcej niż raz, jeśli do wszystkich, usuń warunek
  7.  
  8. $keys = array_keys($myArray, $key);
  9.  
  10. $i = 1;
  11.  
  12. foreach ($keys as $changeThisKey) { $myArray[$changeThisKey] .= $i; $i++; }
  13.  
  14. }
  15.  
  16. }
Janek85
Dzięki, dokładnie o to chodziło. smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.