Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Tablica asocjacyjna, problem z przetasowaniem wartosci
dolar
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

Ostrzeżenie: (0%)
-----


Witam ponownie,
Mam za zadanie napisac funkcje, ktora bedzie losowo tasowac wartosci w tablicy asocjacyjnej, nie zmieniajac nazw kluczy. Zrobilam sobie na samym poczatku krotka tablice i krotki kod:

<?php

$tablica = array("1a" => "x" , '1b'=>"y", "1c" =>'z' );

shuffle($tablica);

foreach ($tablica as $key => $value) {

if ($key==0){
$key="1a";
}

if ($key==1){
$key="1b";
}

if ($key==2){
$key="1c";
}

php?>

Czytalam duzo o sortowaniu i tasowaniu i wyczytalam ze funkcja shuffle owszem przetasuje mi wartosci w tablicy, lecz rowniez zmieni mi nazwy kluczy na liczbowe, a tego nie chce ( w chwili obecnej klucz 1a=0, 1b=1 i 1c=2. Chcialam ponownie zmienic te nazwy kluczy i przypisac im pierwotnie nadane nazwy, lecz nie udaje mi sie bo widnieja mi teraz nazwy takie : 01a,11b i 12c. Interesuje mnie przetasowanie tylko i wylacznei wartosci przypisanych do danych kluczy w tablicy. Nie wiem w jakim kierunku moglabym juz pojsc i jak rozwiazac to zadanie. Czy ktos moze mnie chociaz naprowadzic? Pozdrawiam!

Ten post edytował dolar 3.11.2016, 12:34:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Puszy
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

Ostrzeżenie: (0%)
-----


Skrypt który napisał pyton:

1. Do zmiennej $values przypisuje wartości $tablica ($tablica jest nieruszona)
2. Miesza tablicę $values ($tablica jest nieruszona)
3. Do zmiennej $tablica nadpisuje dane poprzez łączenie kluczy tablicy $tablica z pomieszanymi wartościami $values. Przypisywanie zmiennych idzie od prawej do lewej. ($tablica zostaje nadpisana wynikiem array_combine() który z kolei łączy klucze oryginalnej $tablica i pomieszanych wartości które są w zmiennej $values()

P.S. shuffle() za parametr przyjmuje referencje, to znaczy że nie musisz pisać $values = shuffle($values), gdy do funkcji leci referencja to właśnie ta zmienna będzie zedytowana (w sumie to nieistotne ale poczytaj o referencjach i o tym co pisałem, czyli o wartościach zmiennych od prawej do lewej).

print_r() wyświetla tablicę w formacie human readable, w konsoli wyświetli ładnie ułożoną strukturę, z kolei w HTML musisz print_r() wziąć w tagi HTML <pre></pre>


  1. <?php
  2.  
  3. $tablica = ['a', 1, 'trzy'];
  4.  
  5. echo '<pre>';
  6. print_r($tablica);
  7. echo '</pre>';


Ten post edytował Puszy 3.11.2016, 15:48:52
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 22:01