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

PHP podzielenie string'a na array

VPS Starter Arubacloud
0 głosów
285 wizyt
pytanie zadane 27 sierpnia 2017 w PHP przez chmod96 Obywatel (1,380 p.)
Cześć, mam string'a w którym dane oddzielone są znakiem: '|'

Przykład:

Ewa|Nowak|Polka

Karina|Kowalska|Niemka

Ryszard|Król|Polak

itp....

teraz potrzebuję oddzielić to wszystko od siebie czyli imiona do jednej tablicy array nazwiska do drugiej i narodowosć do 3 próbowałem funkcji explode ale nie do końca działała
komentarz 27 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)

próbowałem funkcji explode ale nie do końca działała

Dlaczego? Powinno działać idealnie. Pokaż kod. 

komentarz 27 sierpnia 2017 przez chmod96 Obywatel (1,380 p.)
dzieli mi ale nie wrzuca do array tak jak bym chciał
komentarz 27 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)
A jakbyś chciał? Tworzy standardową tablice.
komentarz 27 sierpnia 2017 przez chmod96 Obywatel (1,380 p.)
Ogólnie chodzi mi o to aby imiona trzymać w jednym polu typu select nazwiska w drugim a narodowości w 3 dlatego potrzebuje to w osobnych array aby potem to wyswietlić
1
komentarz 27 sierpnia 2017 przez Boshi VIP (100,240 p.)
Lepiej stworzyć dwuwymiarową tablicę aniżeli dzielić wszystko na osobne tablice niczym nie związane ze sobą;]
komentarz 27 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)
Jeśli nie możesz inaczej tego zapisać to rozbij to explode tak jak próbowałeś i przypisuj każdą wartość do osobnej tablicy/zmiennej. Można by też kombinować np. z szukaniem pozycji znaku | i wycinanie ze stringa od tego miejsca, ale to wydaje się bardziej zakręcone niż po prostu odczytanie z explode.

2 odpowiedzi

+1 głos
odpowiedź 27 sierpnia 2017 przez Boshi VIP (100,240 p.)
Coś takiego stwórz sobie.
$array=[

    [
        'imie'=> 'janek',
        'nazwisko'=>'nowak',
        'narodowosc'=>'Polska'
    ],

    [
        'imie'=> 'franek',
        'nazwisko'=>'kowalski',
        'narodowosc'=>'Ameryka'

    ]

];
komentarz 27 sierpnia 2017 przez chmod96 Obywatel (1,380 p.)
ok i jak to teraz wrzucić do pól typu select ?
komentarz 27 sierpnia 2017 przez Boshi VIP (100,240 p.)
zagnieżdzona pętla foreach przelatująca po tym i wrzucająca do selecta.
komentarz 27 sierpnia 2017 przez chmod96 Obywatel (1,380 p.)
edycja 27 sierpnia 2017 przez chmod96
<?php

    $dane = [];

    $records = $conn->prepare("SELECT user FROM users");
    $records->execute();

    if($records->rowCount() > 0){
        while($results = $records->fetch(PDO::FETCH_OBJ)){
            $ww = (explode('|', $results->user));
            $dane = [
                'el1' => $ww[0],
                'el2' => $ww[1], 
                'el3' => $ww[2]
            ];
        }
    }
?>

mam coś takiego i tworzy mi taką tablicy jak twoja tylko problem pojawia się taki że w niej mam tylko ostatni wyjęty element

przez to ze mi nie dodaje do tablicy dane tylko ja nadpisuje

 

komentarz 27 sierpnia 2017 przez Boshi VIP (100,240 p.)
bo zamiast zer masz dać indeksy asocjacyjne.. teraz tylko ostatni element ci zostanie po przejściu pętli bo każdy indeks kluczowy nadpisujesz.
komentarz 27 sierpnia 2017 przez chmod96 Obywatel (1,380 p.)
czyli jak ma wyglądać kod ?
komentarz 27 sierpnia 2017 przez Boshi VIP (100,240 p.)
Coś mam wrażenie, że utrudniasz sobie życie.  Treaz zauważyłęm dopiero, że tam jest jeszcze explode więc faktycznie są indeksy numeryczne.

Czy Ty czasem w bazie nie masz w jednym polu zapisanego imienia,nazwiska i narodowości? jeżeli tak, to zmień jej schemat, bo imo to jest durnota.
komentarz 27 sierpnia 2017 przez chmod96 Obywatel (1,380 p.)
to nie moja baza i muszę sobie radzić
komentarz 27 sierpnia 2017 przez Boshi VIP (100,240 p.)
Pokaż strukturę tej bazy- tabeli user
komentarz 27 sierpnia 2017 przez Boshi VIP (100,240 p.)

foreach ($rows as $key=> $row) {

    $explode=explode('|',$row->user);


    $arrayObiect[]=[
        'imie'=>$explode[0],
        'nazwisko'=>$explode[1],
        'narodowosc'=>$explode[2],
    ];


}

 

do tablicy dane musisz dodać wymiar. czyli $dane[]=[ ]

 

0 głosów
odpowiedź 27 sierpnia 2017 przez gromula Stary wyjadacz (10,070 p.)
edycja 27 sierpnia 2017 przez gromula
$users  = "Ewa | Tomek | Monika";
$user = explode(" | ", $users);
echo $user[0]; // Ewa 
echo $user[1]; // Tomek 

 

Podobne pytania

0 głosów
1 odpowiedź 410 wizyt
pytanie zadane 17 marca 2017 w PHP przez nielotweb Bywalec (2,240 p.)
0 głosów
0 odpowiedzi 158 wizyt
pytanie zadane 15 czerwca 2017 w PHP przez Bartlomiej Bywalec (2,480 p.)
0 głosów
1 odpowiedź 128 wizyt
pytanie zadane 28 kwietnia 2017 w PHP przez Ziuziek Mądrala (5,140 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...