Jak uzyskać dostęp do pottablicy w PHP

0

Mam taki problem jak uzysac dostęp do tablicy w tablicy w php bo mam tablice i w niej jeszcze jedną tablicę i teraz pytanie jak się uzykuje dostęp do tablicy w tablicach jak się uzyksuje dostęp do tablic wielowymiatowych wiem, ale mi chodzi o podtablice bo pierwszy raz ich używam.

To jest var_dump tej tablicy.

Array ( [0] => Array ( [0] => sds dsfsfsdfsdf [1] => 12344555 [2] => tomeki [3] => Array ( [0] => Array ( [0] => sdcsd sdfsdfsf dsvfsd dsf dsfsdf [1] => 11232312 [2] => tomeki ) [1] => Array ( [0] => dsfsf dsfsdf sdfdsf [1] => 2323424 [2] => tomeki ) ) ) )

0

Wiesz jak się dostać do pojedyńczego elementu tablicy, prawda? Rozłóż sobie to na małe kroczki. Dobranie się do dowolnego zagnieżdzenia, to nic innego jak wielokrotne pobieranie pojedyńczego elementu.

$data = [ 'element' ];
$element = $data[0];

var_dump($element);

$data = [ ['element'] ];
$element = $data[0];

var_dump($element);
var_dump($element[0]);

$element = [ [ [ 'element'] ] ];
var_dump($element);
var_dump($element[0]);
var_dump($element[0][0]);
string(7) "element"
array(1) {
  [0]=>
  string(7) "element"
}
string(7) "element"
array(1) {
  [0]=>
  array(1) {
    [0]=>
    array(1) {
      [0]=>
      string(7) "element"
    }
  }
}
array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(7) "element"
  }
}
array(1) {
  [0]=>
  string(7) "element"
}

Myślę, że postrzegasz dwuwymiarową tablicę w sposób pokazany na ilustracji w lewym górnym rogu. Jak ja zaczynałem, to takie postrzeganie przeszkadzało mi w zrozumieniu tablic. W rzeczywistości każdy element tablicy wielowymiarowej trzyma referencje do innej tablicy i przypomina to bardziej drzewo, a nie matrix.
title

0

Próbuje się dostać właśnie w taki sposób

print $read_kome3[1][[1][1]];

Tak jak to jest na twoim obrazku, ale dostaje komunikat.

Undefined offset: 1

0

Żeby odwołać się do elementu tablicy potrzebujemy dwóch rzeczy: tablicy i klucza.

$tablica = [1, 2, 3, 4]
$tablica[0] // to zwróci nam element, który jest pod indeksem 0

$tablica = [ "klucz" => 1 ];
$tablica["klucz"] // to zwróci nam element, który przypisany do klucza "klucz"

Zasada działania przy tablicy zagnieżdzonej jest identyczna.

$tablicaZagniezdzona = [ [ 1 ] ];

// najpierw pobieramy pierwszy element tablicy zewnętrznej
$tablicaWewnetrzna = $tablica[0];

// pod $tablica[0] jest [ 1 ], wiec zmienna $tablicaWewnetrzna zawiera teraz pojedyncza tablice [ 1 ];
$tablicaWewnetrzna[0] // to zwroci nam element, który jest pod indeksem 0

Interpreter PHP czyta sobie takie wyrażenie od lewej do prawej, więc zamiast odczytywać wewnętrzny element w dwóch krokach, z przypisaniem do zmiennej pośredniej ($tablicaWewnetrzna), to możemy to zrobić w jednym kroku

$tablicaZagniezdzona = [ [ 1 ] ];
$tablicaZagniezdzona[0][0] // // to zwroci nam 1
^^^^^^^^^^^^^^^^^^^^^^^
// Ponieważ interpreter wykonuje sobie od lewej do prawej, to najpierw
// wykona pierwsze wyrazenie $tablicaZagniezdzona[0], które zwróci tablicę wyglądającą tak: [1]
// a pozniej zrobi [1][0]

$tablicaZagniezdzona = [ [ [ 1, 2, 3] ] ];
$tablicaZagniezdzona[0][0][0] 
// kroki są takie:
//$tablicaZagniezdzona od 0 to [ [ 1, 2, 3] ]
// [ [ 1, 2, 3] ] od 0 to [ 1, 2, 3]
// [ 1, 2, 3] od 0 to 1 

Rozpisz sobie twóje pobieranie elementu na trzy kroki, to znajdziesz błąd.

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