Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] array_search nie działa
Forum PHP.pl > Forum > Przedszkole
lesz735
Z podręcznika php http://php.net/manual/pl/function.array-search.php wrzuciłem coś takiego:



<?PHP

$userdb=Array
(
(0) => Array
(
(uid) => '100',
(name) => 'Sandra Shush',
(url) => 'urlof100'
),

(1) => Array
(
(uid) => '5465',
(name) => 'Stefanie Mcmohn',
(pic_square) => 'urlof100'
),

(2) => Array
(
(uid) => '40489',
(name) => 'Michael',
(pic_square) => 'urlof40489'
)
);
echo '<pre>';
print_r($userdb);
echo '</pre>';

//simply u can use this

$key = array_search(40489, array_column($userdb, 'uid'));
echo '<pre>';
print($key);
echo '</pre>';

echo '<pre>';
print('alamakota');
echo '</pre>';
?>

uruchomiłem i dostaję taki ekran:

Array
(
[0] => Array
(
[uid] => 100
[name] => Sandra Shush
[url] => urlof100
)

[1] => Array
(
[uid] => 5465
[name] => Stefanie Mcmohn
[pic_square] => urlof100
)

[2] => Array
(
[uid] => 40489
[name] => Michael
[pic_square] => urlof40489
)

)

Gdzie jest błąd bo nie działa array_search??

Mam
Serwer: Localhost via UNIX socket
Wersja serwera: 5.5.47-0+deb7u1
Wersja protokołu: 10

Dziękuję za pomoc.
Tomplus
P_okazywanie wersji serwera nie potrzebujemy, raczej wersję parsera PHP:

Aby działał ci twój kod to musisz naprawić swoje tabele.
Kluczy nie daje się w nawiasach () a [] lub w cudzyslowiach '':

Powinien ci działać ten kod z danymi:

Kod
$userdb = [
    0 => [
        'uid' => '100',
        'name' => 'Sandra Shush',
        'url' => 'urlof100'
    ],
    1 => [
        'uid' => '5465',
        'name' => 'Stefanie Mcmohn',
        'pic_square' => 'urlof100'
    ],
    2 => [
        'uid' => '40489',
        'name' => 'Michael',
        'pic_square' => 'urlof40489'
    ]];


Polecam do testowania np. taką stronę: http://phptester.net/
Można wrzucić kod, sprawdzić pod różnymi wersjami i potem wkleić do swojego kodu.
lesz735
Chyba mnie źle zrozumiałeś;; to nie jest mój kod to jest kod przeklejony z podręcznika PHP linka podałem; może trzeba poprawić ten podręcznik??\
Niestety to co mi podesłałeś też nie działa.

Pozdrawiam
Popek231
  1. <?php
  2. $userdb=Array
  3. (
  4. (0) => Array
  5. (
  6. @(uid) => '100',
  7. @(name) => 'Sandra Shush',
  8. @(pic_square) => 'urlof100'
  9. ),
  10.  
  11. (1) => Array
  12. (
  13. @(uid) => '5465',
  14. @(name) => 'Stefanie Mcmohn',
  15. @(pic_square) => 'urlof100'
  16. ),
  17.  
  18. (2) => Array
  19. (
  20. @(uid) => '40489',
  21. @(name) => 'Michael',
  22. @(pic_square) => 'urlof40489'
  23. )
  24. );
  25.  
  26. /* //dla testu: tablica asocjacyjna dwuwymiarowa - chodzenie po niej
  27. $i=0;
  28. foreach($userdb as $a1){
  29. $kluczea1 = array_keys($userdb);
  30. echo 'KLUCZ: '.$kluczea1[$i].'<br>';
  31. $k=0;
  32. foreach($a1 as $a2){
  33. $kluczea2 = array_keys($userdb[$kluczea1[$i]]);
  34. echo '---- '.$kluczea2[$k].' => '.$a2.'<br>';
  35. $k++;
  36. }
  37. echo '<br>';
  38. $i++;
  39. }
  40. */
  41.  
  42. echo array_search(40489, array_column($userdb, 'uid')).'<br>'; //2
  43. echo array_search('urlof100', array_column($userdb, 'pic_square')).'<br>'; //0
  44. echo array_search('Stefanie Mcmohn', array_column($userdb, 'name')).'<br>'; //1
  45. ?>


- zwraca wyniki, więc działa:)
na XAMPP odpal i sprawdź...
lesz735
Niestety u mnie czysty ekran nic nie zwraca chyba mam za stare oprogramowanie bo mam php 3.4.11.1deb2+deb7u2 a musi być (PHP 5 >= 5.5.0) i chyba w tym problem.

I jeżeli ktoś może mi odpowiedzieć; wrzuciłem to na tester http://phptester.net/ i to chodzi na 5.2 nie chodzi na 5.3; 5.4 i chodzi na 5.5?questionmark.gif czy to jest tak że stare 5.2 daje radę , nowsze 5.3; 5.4 nie a najnowsze 5.5 tak? czego ja tu nie rozumiem?

//smacznego jajka (vide następny post) laugh.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.