• 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
178 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,990 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,990 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 (254,550 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 100 wizyt
pytanie zadane 6 września 2020 w Algorytmy przez Damian2102 Nowicjusz (150 p.)
0 głosów
1 odpowiedź 700 wizyt
0 głosów
1 odpowiedź 342 wizyt

92,680 zapytań

141,583 odpowiedzi

320,068 komentarzy

62,041 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

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!

...