Pobierane wartości tablicy po id, a nie nazwie

0

Witam,
i mam kolejny problem - mogę go inaczej rozwiązać, ale nie chcę. A więc mam tablicę:

$tab['a'] = "aaa";
$tab['b'] = "bbb";
$tab['c'] = "ccc";
$tab['d'] = "ddd";

Jeżeli zrobię:

echo $tab['a'];

to wyświetli mi aaa, a jak pobrać to samo, ale po numerze, np:

echo $tab[0];

Nie mogę znaleźć odpowiedniej funkcji.

0

hmm, a takie coś:

<?php
$tab['a'] = "aaa";
$tab['b'] = "bbb";
$tab['c'] = "ccc";
$tab['d'] = "ddd";
$dod = 97;

echo $tab[chr(0 + $dod)];
?>

Cie satysfakcjonuje?

0

To że jest a,b,c,d to przykład. Bardziej myślę o:

Name, Surname, Mail itp.

Widzę że chyba będę musiał obejść tę metodę.

0

Mógłbyś spróbować przy użyciu pętli Foreach; np.:

Function Znajdz($Tablica, $Numer)
{
 Foreach ($Tablica As $Num=>$Element)
  if ($Numer == $Num)
   return $Element;
}
0

Dziękuję za wysiłek, i tak to potrafię zrobić. Chodzi mi o to czy jeżeli w tablicy ID jest string'iem, to czy można pobrać podając numer (ale to raczej nie jest możliwe).

0

Po co Ci to? Taka konstrukcja byłaby co najmniej dziwna, przecież indeksem może być i łańcuch i liczba - http://ideone.com/chPHT.

Dziękuję za wysiłek, i tak to potrafię zrobić. Chodzi mi o to czy jeżeli w tablicy ID jest string'iem, to czy można pobrać podając numer (ale to raczej nie jest możliwe).

Można się bawić tak, jak pokazał Patryk27, ale czy to ma sens? http://ideone.com/LIzgK

0

No właśnie o tym napisałem. Moje pytanie brzmi: czy można do tablicy:

$arr['jakis_napis_pierwszy'] = "cos 1";
$arr['jakis_napis_drugi'] = "cos 2";
$arr['jakis_napis_trzeci'] = "cos 3";

odwołać się poprzez podanie indeksu a nie nazwy pola - bez pisania funkcji. Potrafię napisać sobie funkcje z wykorzystaniem foreach, ale nie o to chodzi. Pobierając z bazy danych poprzez mysql_fetch_array - możemy podać index lub nazwę, ale tylko dlatego że są tworzone w obu opcjach i zastanawaiłem się czy można pobrać zawartość tablicy podając index, mimo że nie był utworzony (patrz powyżej). Rozumiem że się nie da - poradzę sobie inaczej z moim kodem.

Dlatego podziękowałem za porady, ale nie o to mi chodziło i były zupełnie nieprzydatne.

0
Zi00mal napisał(a)

[...] odwołać się poprzez podanie indeksu a nie nazwy pola [...]

Tablice w php nie mają żadnych pól... tak jak tablice w znanych mi językach programowania mają index i wartość "pod indeksem" - nie ważne czy index jest Integerem, Stringiem czy innym cudem.
Niemożliwe jest uzyskanie tego, co chcesz uzyskać bez przetwarzania tablicy. Minuta w manuallu: array_values().
Jednak nie mam ochoty sprawdzać, jak działa w.w. funkcja, możliwe, że też używa foreach ;p

Poza tym, mogę się mylić, ale mysql_fetch_array() zwraca tablicę wyglądającą tak:

$tablica = array(
        0 => 'Tekst pierwszy',
        1 => 'Tekst drugi',
        2 => 'Tekst trzeci',
        'pierwszy' => 'Tekst pierwszy',
        'drugi' => 'Tekst drugi',
        'trzeci' => 'Tekst trzeci'
);

Tak, że nie jest to jakieś genialne rozwiązanie, po prostu wartości są zdublowane.

0

Zawsze można się pobawić z referencjami:

$tablica = array(
        0 => 'Tekst pierwszy',
        1 => 'Tekst drugi',
        2 => 'Tekst trzeci',
);                 
$tablica['pierwszy'] = &$tablica[0];
$tablica['drugi']      = &$tablica[1];
$tablica['trzeci']     = &$tablica[2];

Jeśli bardzo zależy Ci na takich bajerach możesz sobie stworzyć własną klasę ExdendedArray, która będzie tworzyć takie 'podwójne tablice'.

0

Dzięki za pomoc, ale to wszystko wiem. Chodziło mi tylko o inny sposób odwołania, ale rozumiem że podczas tworzenia tablicy nie zapamiętuje kolejności.

Jeszcze raz dzięki i proszę o zamknięcie tematu.

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