Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] array_fill
Forum PHP.pl > Forum > Przedszkole
czaro123
Witam,
poniżej kod:
  1. $aaa = array(4,2,3);
  2. $bbb = count($aaa);
  3. foreach ($aaa as $war){
  4. $tablica1 = array();
  5. for ($i=0; $i<$bbb; $i++){
  6. $tablica1[] = array_fill(0, $bbb, $aaa[$i]);
  7. }
  8. }
  9.  
  10. print_r($tablica1);


problem
chciałbym uzyskać tablicę, gdzie dany element będzie powtórzony $bbb razy tzn wynik tego kodu powinien wynosić (4,4,4,2,2,2,3,3,3) - tablica jednowymiarowa. natomiast kod ten, podaje tablicę dwuwymiarową:
Array (
[0] => Array ( [0] => 4 [1] => 4 [2] => 4 )
[1] => Array ( [0] => 2 [1] => 2 [2] => 2 )
[2] => Array ( [0] => 3 [1] => 3 [2] => 3 )
)
czy mógłbym prosić o nakierowanie jak uzyskać tablicę jednowymiarową? z góry dziękuję
phpion
Dzieje się tak z racji tego $tablica1[]. Użyj array_merge.
czaro123
dzięki wielkie za szybką odp. wczoraj po Twojej odp próbowałem użyć array_merge ale cały czas nie wychodzi. rozumiem że po zastosowaniu array_fill mam użyć array_merge aby z tablicy wielowymiarowej zrobić jednowymarową? w manualu jest pokazane jak połączyć dwie lub więcej tablic jednowymiarowych ale nie znalazłem info jak z tablicy wielowymiarowej zrobić jednowymiarową za pomocą array_merge. czy możesz podesłać linka z przykładem? z góry dziękuję
nospor
A kto ci kaze z wielowymiarowki robic jednowymiarowke?
phpion dosc wyraznie zaznaczyl, ze blad jest tu: $tablica[] - masz tak nie robic. zamiast tego masz uzyc array_merge, wowczas nie dojdziesz nawet do etapu, ze bedziesz mial wielowymiarowke
czaro123
aby się upewnić: za pomocą array_merge mogę uzyskać tablice o wartościach (4,4,4,2,2,2,3,3,3)?

jeśli zrobię w ten sposób:
  1. $aaa = array(4,2,3);
  2. $tablica1= array_merge($aaa,$aaa,$aaa);

to wychodzi (4,2,3,4,2,3,4,2,3,) //nie o to chodzi
a jeśli tak:
  1. $aaa = array(4,2,3);
  2. foreach ($aaa as $war){
  3. $tablica1 = array();
  4. for ($i=0; $i<3; $i++){
  5. $tablica1[]= array_merge($aaa[$i],$aaa[$i],$aaa[$i]);
  6. }
  7. }

to mam komunikat iż argument nie jest tablicą.
nospor
Jejcius..... w ogole nie czytasz co sie do ciebie pisze. Nikt ci nie kazal zmieniac sposobu duplikacji. Jedyne co masz zmienic to sposob dodawania do $tablica1. Wszystko inne, wlacznie z array_fill ma pozostac. Skup sie troche. To naprawde nie jesttrudne
czaro123
nie mam pojęcia jak to zrobić. pośmiejesz się ale próbuje metodą prób i błędów. dla przykładu:
  1. //$tab1 = array_fill(0,$bbb,$aaa); //9 razy $aaa w formie tablicy wielowymiarowej
  2. //$tab1 = array_fill(0,$bbb, array_merge($aaa)); //9 razy $aaa w formie tablicy wielowymiarowej
  3. //$tab1 = array_fill(0,$bbb,array_merge($aaa[$i])); // array_merge(): Argument #1 is not an array
  4.  
  5. //$tab1 = array_merge(array_fill(0,$bbb,$aaa)); //to samo co w wierszu 1
  6. //$tab1 = array_merge(array_fill(0, $bbb, $aaa[$i])); // 9 razy same ostanie wartości z $aaa, chyba najbliżej rozwiązania ale pobrane są tylko ostanie wartości z tablicy $aaa
  7. //$tab1[] = array_merge(array_fill(0, $bbb, $aaa[$i])); // tablica wielowymiarowa


próby mogą wyglądać na "błądzenie we mgle" ale to na tą chwilę jest mój stan wiedzy. prośba o podpowiedź.
nospor
Masz dwie tablice:
$tablica1
array_fill(0, $bbb, $aaa[$i])

Musisz przy pomocy array_merge je połaczyc i wynik zapisac:
$tablica1 = array_merge($tablica1, array_fill(0, $bbb, $aaa[$i]));

I koniec, to wszystko.
czaro123
działa, wielkie dzięki, ale na zrozumienie tego będę potrzebował duuużo czasu. sam w życiu bym na to nie wpadł. nie wiedziałem, że elementem danej zmiennej może być ta sama zmienna ( $tablica1 = array_merge($tablica1,... ). wydawało mi się że jeżeli jest jakaś niewiadoma ($tablica1) to muszę ją obliczyć za pomocą zmiennych które są znane. jeszcze raz wielkie dzięki. czeka mnie dużo nauki.
nospor
No a jak niby zwiekszasz np. $x o jakąś wartosc? Dokladnie tak samo:
$x = $x + 5;
Dokladnie ten sam schemat dzialania.
vonski
Cytat(czaro123 @ 22.01.2014, 12:29:29 ) *
wydawało mi się że jeżeli jest jakaś niewiadoma ($tablica1) to muszę ją obliczyć za pomocą zmiennych które są znane. jeszcze raz wielkie dzięki. czeka mnie dużo nauki.


To by się zgadzało... jeśli mówilibyśmy o matematyce smile.gif Bo faktycznie $x != $x + 5 (słownie: x nie równa się x dodać pięć). Z tym że w programowaniu ten zapis oznacza co innego niż w matematyce, a poza tym, w programowaniu nie masz "niewiadomych" tylko "zmienne" smile.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.