Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: array_search nie wyszukuje
Forum PHP.pl > Forum > PHP
MESSIAH :)
W jaki sposób mogę przeszukać tablicę wielowymiarową przy użyciu array_search? Przykład:
Kod
<?php
$a=array("a"=>array("red"),"b"=>array("green"),"c"=>array("blue"));
        echo array_search("red",$a);
        echo array_search("red", array_column($a, ""));

Ten przykład nie znajduje niczego.
Malukaz
  1. function recursive_array_search($needle,$haystack) {
  2. foreach($haystack as $key=>$value) {
  3. $current_key=$key;
  4. if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
  5. return $current_key;
  6. }
  7. }
  8. return false;
  9. }
MESSIAH :)
array_search jest po to aby nie pisać petli.
nospor
tja..... ale array_search jest zaprojektowane by szukac po jednowymiarowej tablicy a nie zagnieżdzonej....
Chyba, ze uzywasz nowszej wersji php, wowczas ta konstrukcja
array_search("red", array_column($a, ""));
jest prawie poprawna... mowie, prawie, bo masz podac index po jakim szukasz, a "" nie jest indeksem jaki masz. Indeksem jaki masz jest 0

array_search("red", array_column($a, 0));
I to juz dziala na nowym php
MESSIAH :)
Nowy czyli? Ja mam 5.6.11 i nie działa. Dałem tak jak napisałeś 0 i nic dalej to samo.
nospor
No zobacz, a mi działa smile.gif
Ja mam 5.5 i ponoc wlasnie od 5.5 to ma juz dzialac
MESSIAH :)
Teraz zwraca mi fals lub 0. Czemu ta funkcja nie zwraca całej wartości?
Pyton_000
Dostałeś bana na manual? Tak trudno sprawdzić co zwraca funkcja ?
MESSIAH :)
No zwraca odpowiedni klucz. Ale mi zawraca 0. To jest poprawne? Ja bym chciał aby mi zwróciło wartość klucza.
nospor
Ok, a jaką konkretnie wartosc chciałbyś uzyskać?
MESSIAH :)
Chciałbym wyszukać np red w wartości np: "red/blue/green/" i żeby mi zwróciło cały ciąg "red/blue/green".
nospor
Przepraszam, chciałbym się upewnić, bo nie wiem czy dobrze zrozumialem:
masz tekst "red/blue/green/" i chcesz sprawdzic, czy w tym tekscie jest red i jesli jest to ma zwrocic caly tekst "red/blue/green/" ?
Jesli tak, to po grzyba ci tablica z pierwszego postu?
MESSIAH :)
Bo wszystkie wartości mam zapisane w tablicy np:
Kod
<?php
Array
(
    [0] => Array
        (
            [0] => \red\blue
        )

    [1] => Array
        (
            [0] => \cherry
        )

    [2] => Array
        (
            [0] => \cherry\yellow
        )

    [3] => Array
        (
            [0] => \black\white
        )

    [4] => Array
        (
            [0] => \white\red
        )

    [5] => Array
        (
            [0] => \black
        )

    [6] => Array
        (
            [0] => \red\green
        )
)

I teraz chcę wyszukać np: "\red\" i chcę otrzymać całąwartość tego klucza.
Pyton_000
Cisną mi się na usta bardzo niecenzuralne słowa pod Twoim adresem ale zachowam je dla siebie...

array_column, foreach, mb_stripos
MESSIAH :)
Przepraszam "kolego" iż nie spełniam twoich oczekiwań zapewne urodziłeś się już informatykiem i wieku 3 lat nauczałeś innych kodowania. niestety ja się dopiero uczę i zamiast otrzymywać pomoc to otrzymuje jakieś wywody. Natomiast na moje usta ciśnie się jeden wyraz pod twoim adresem zaczyna się na "c" a kończy na "j". Ty tak na serio? To forum jest od pisanie i pomagania w kodowaniu a nie pisanie swoich ubogich myśli. Jeśli napisałeś już rebus w stylu:
array_column, foreach, mb_stripos to może rozwiń sentencje aby inni mogli zapoznać się z twoim tworem i ewentualnie go poprawić.
Pyton_000
Jakbyś napisał DOKŁADNIE co masz czego chcesz i jak ma to wyglądać to odpowiedź dostałbyś już dawno.

Skoro bierzesz się za kodowanie to wypadałoby nauczyć się zadawania precyzyjnych pytań. Rebus dostałeś, teraz Twoja kolej żeby się wysilić i napisać sobie rozwiązanie.

Piszesz najpierw jedno, dostajesz odpowiedź, potem piszesz że jednak to nie to i chcesz coś innego. Zdecyduj się. Wróć jak nauczysz się zadawać konkretne pytania.
MESSIAH :)
Cytat
I teraz chcę wyszukać np: "\red\" i chcę otrzymać całą wartość tego klucza.

Przepraszam ale którego zdania nie rozumiesz?
Panowie roz....bałem temat przy użyciu poniższego kodu:
$google + $WhatYouSearch = $OnlyEnglishSite

array_filter rozwiązało problem.

Panie Pyton ja się nie dziwie że Pan mi podał takiego mixa na kilkanaście linijek a tu proszę w 4 się zmieściłem. Ja się Panu nie dziwię skoro są kłopoty z czytaniem ze zrozumieniem to i odpowiedź nie najlepsza.
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.