• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP tablice wyjątki

Object Storage Arubacloud
+1 głos
161 wizyt
pytanie zadane 7 września 2020 w PHP przez Jacek Krawczyk Nowicjusz (160 p.)
Witam,mam tablice dwuwymiarową w PHP potrzebuję jakoś z zbioru 30 danych (nazwy produktów, które maja swoje właściwości ale to nie istotne) umieścić 6 z nich zawsze na początku tablicy. Np.: z 3 przedmiotów ołówek, kredka, zeszyt zrobić tak aby zawsze pod $tablica[0][x] znajdował się ołówek. Jest jakaś funkcja w PHP za to odpowiedzialna? Bo nic nie przychodzi mi do głowy :C proszę o pomoc i z góry dziękuję :D

2 odpowiedzi

0 głosów
odpowiedź 7 września 2020 przez Ehlert Ekspert (212,670 p.)
wybrane 7 września 2020 przez Jacek Krawczyk
 
Najlepsza
Nie rozumiem co chcesz tym osiągnąć. Opisz proszę jaki cel chcesz zrealizować.

Jeśli masz jakieś byty w stylu ołówek, kredka itp. i mają one swoje dane, to najlepiej jest to trzymać w obiektach. Wtedy będą mieć z góry ustaloną strukturę, określone twardo typy.

Korzystanie z tablic do takich celów to kiepski pomysł. Pod każdy klucz możesz wrzucić co Ci się podoba, dowolnego typu. Taki kod potem bardzo ciężko debugować.
komentarz 7 września 2020 przez Jacek Krawczyk Nowicjusz (160 p.)
Mały programik do szkoły natomiast chodzi mi o to ze funkcja sczytuje dane i wpisuje je automatycznie do tablicy natomiast jeśli natrafi na wyznaczone przeze mnie przedmioty to lądują one na początku tablicy pod indeksami 0,1,2,3,4,5. Nie wiem czy to wystarczająco wytłumaczyłem, chodzi o prostą funkcję do zapisywania przedmiotów w tablicy natomiast jesli funkcja natrafi na specjalny przedmiot leci on na samą górę :D

 

Oczywiście nie proszę o gotowca tylko o nakierowanie/ wskazanie odpowiedniej funkcji w PHP :D
komentarz 7 września 2020 przez Ehlert Ekspert (212,670 p.)

Dlatego aby nie korzystać z tablic dwuwymiarowych ogarnij sobie jak Tworzyć proste obiekty.

Potem po utworzeniu tablicy obiektów skorzystaj np. z uasort

1
komentarz 7 września 2020 przez Jacek Krawczyk Nowicjusz (160 p.)
Okej, dziękuję za pomoc spróbuję ogarnąć te obiekty :D
0 głosów
odpowiedź 8 września 2020 przez VBService Ekspert (252,740 p.)
edycja 8 września 2020 przez VBService

Nie wiem, czy do końca zrozumiałem Twoje pytanie, ale "rzuć okiem" na to wink:

array.php - on-line.

<?php

$input = ["Witam","mam","tablice","zeszyt","dwuwymiarową w PHP.",
		  "ołówek","Potrzebuję","kredka1","ze zbioru","umieścić na początku."];

// --- Demo ---
// edytor on-line używa PHP_EOL można zmienić na np.: <br>
echo "Orginalna wejściowa tablica".PHP_EOL;
print_r($input).PHP_EOL;
echo PHP_EOL;
echo implode(" ",$input);
echo PHP_EOL.PHP_EOL;
echo "Przefiltrowana wejściowa tablica".PHP_EOL;
$new_input = twojaNazwa($input);
print_r($new_input);
echo PHP_EOL;
echo implode(" ",$new_input);


function twojaNazwa($input) {
    $searched = ["ołówek","kredka","zeszyt"];    
    // Zwraca tablicę słów szukanych (z $searched), które są w $input
    $found_searched = array_intersect($input,$searched);
    // Wyrzucamy z $searched słowa, które nie zostały znalezione w $input
    // i reindeksujemy tablice $found_searched, żeby indeks zaczynał sie od n0, n+1
    $clean_found_searched = array_merge(array_intersect($found_searched,$searched));
    // Wrzucamy z $input znalezione ($searched), za pomocą $clean_found_searched
    // i reindeksujemy nową zawartość tablicy $input
    $clean_input = array_merge(array_diff($input,$clean_found_searched));
    // Dodajemy na początku nowego $clean_input -> $clean_found_searched
    $new_input = array_merge($clean_found_searched,$clean_input);
    return  $new_input;
}

?>

1
komentarz 9 września 2020 przez Assasz Nałogowiec (30,460 p.)

Też pozwoliłem sobie napisać swoją wersję rozwiązania - a, nudziłem się w pracy ;)

$input = ['test0', 'kredka', 'test1', 'olowek', 'test2', 'test3', 'test4'];
$output = [];

array_walk(
    $input,
    static function(string $item) use (&$output): void {
        // dodaj pozycję do nowej tablicy
        $output[] = $item;
        
        // jeśli pozycja nie należy do grupy szukanych elementów, kontynuuj
        if (!in_array($item, ['kredka', 'olowek'], true)) {
            return;
        }
        
        // jeśli należy, dodaj ją na początek nowej tablicy
        array_unshift($output, $item);
    }
);

// usuń duplikaty
$output = array_unique($output);

var_dump($output);

// output
array(7) {
  [0]=>
  string(6) "olowek"
  [1]=>
  string(6) "kredka"
  [2]=>
  string(5) "test0"
  [4]=>
  string(5) "test1"
  [6]=>
  string(5) "test2"
  [7]=>
  string(5) "test3"
  [8]=>
  string(5) "test4"
}

 

Podobne pytania

+1 głos
0 odpowiedzi 97 wizyt
pytanie zadane 6 września 2020 w Algorytmy przez Damian2102 Nowicjusz (150 p.)
0 głosów
1 odpowiedź 683 wizyt
0 głosów
1 odpowiedź 312 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...