Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [tablice] Funkcja wrzucająca do tablicy
Asmox
post
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

Ostrzeżenie: (0%)
-----


Jeżeli mamy tabelę mysql trzymającą drzewo IP, przy pobieraniu danych można automatycznie ułożyć z kolejnością kategorii, czyli np.
1.1.1
1.2.1
1.2.2
1.3.1
1.4.1
1.4.2
i tak dalej i tak dalej
Jeżeli zrobimy na takim pojedynczym IP explode, to mamy całą jakby strukturę. I tu mam problem, bo chciałbym zrobić funkcję wrzucającą to tablic o jakimś zagłębieniu. Ma ona jako argumenty mieć podane zmienną tablicy i tablicę zawierającą klucze kolejnych wymiarów, czyli:
  1. function wrzucDoTablicy($tablica, array $zaglebienia, $zmienna) {
  2. /* jakis kod funkcji */
  3. }
  4. $tablica = array();
  5. $zaglebienie = array('a', 2, 'foo', 'bar')
  6. $zmienna = 'fool';
  7. wrzucDoTablicy($tablica, $zaglebienie, $zmienna);
  8. // $tablica['a'][2]['foo']['bar'] = 'fool';

Nie wiem jak to zaimplementować / nie wiem czy jest domyślna funkcja, która mogła by mi pomóc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Może zacznij tak: Jest mi to potrzebne do...

Tak będzie łatwiej, uwierz.
Go to the top of the page
+Quote Post
Asmox
post
Post #3





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

Ostrzeżenie: (0%)
-----


Cytat(fifi209 @ 20.09.2010, 00:14:52 ) *
Może zacznij tak: Jest mi to potrzebne do...

Tak będzie łatwiej, uwierz.

Jest mi to potrzebne do stworzenia tablicy w php, która będzie odzwierciedleniem drzewa. Bo w SQL to tak naprawdę nie jest żadne drzewo, tylko łańcuchy znaków, które mają posłużyć do zbudowania. Wydawało mi się, że to było jasne.
Dam następny przykład, czyli jak to miałoby wyglądać
  1. $mysql = new SimpleMySQL();
  2. $tabelaSQL = $mysql->getAll(); // Po prostu pobranie całej tabeli z DB
  3. $tree = array(); // Tu będzie nasze drzewo
  4. foreach($tabelaSQL as $row) {
  5. $ipArr = explode('.', $row['ip']);
  6. wrzucDoTablicy($tree, $ipArr) // Argument $zmienna z poprzedniego pomysłu w sumie można wywalić
  7. }

No i print_r($tree) ma dać ładną wieeelowymiarową tablicę o kluczach zgodnych z id kategorii
O to właśnie mi chodzi.

@EDIT
No to może czy da się zrobić jakieś generowanie klucza tablicy na kształt
  1. $key = "x][y][z";
  2. $arr[$key] = 'foobar';
  3. echo $arr[x][y][z];

Albo powiedzcie po prostu jak zrobić tablicę z ltree..

@EDIT:
Spróbuję pokazać, jakby to mogło wyglądać, ale nie może być z powodu małej elastyczności:
  1. function arrayInsert(array &$tablica, array $klucze, $zmienna) {
  2. $numKeys = count($klucze);
  3. switch ($numKeys) {
  4. case 1: $tablica[$klucze[0]] = $zmienna; break;
  5. case 2: $tablica[$klucze[0]][$klucze[1]] = $zmienna; break;
  6. case 3: $tablica[$klucze[0]][$klucze[1]][$klucze[2]] = $zmienna; break;
  7. (...)
  8. }
  9. }

I to można by pisać w nieskończoność... Co prawda więcej niż 10 poziomów do tablicy raczej mi się nie przyda, ale zastanawiam się czy nie ma może podobnej funkcji w php

@BUMP

Ten post edytował Asmox 29.12.2010, 22:19:29
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 04:45