Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tabela asocjacyjna
Forum PHP.pl > Forum > Przedszkole
Kamis
Mam następujący kod:

  1. $table_time_after_work = array (
  2. '[15][6]' => '1',
  3. '[25][6]' => '2',
  4. '[35][6]' => '3',
  5. )
  6. while ($table_time_after_work as $key_time_after_work => $time_after_work){
  7. if ($key_time_after_work == '[$p_bug_data->priority][$p_bug_data->project_id]'){
  8. $set_time_after_work = $time_after_work;
  9. }
  10. }


Czy dobrze łączę pierwszy klucz: [$p_bug_data->priority][$p_bug_data->project_id]?
Jeśli ustali wartość to jak ją pobrać: $set_time_after_work = $time_after_work; ?
mar1aczi
Znasz takie funkcje jak var_dump, czy print_r?
Skorzystaj z jednej z nich dla tego fragmentu
Cytat(Kamis @ 24.03.2014, 11:45:23 ) *
'[$p_bug_data->priority][$p_bug_data->project_id]'

przypisując wcześniej powyższe pod tymczasową zmienną.
Kamis
  1. $table_time_after_work = array (
  2. '[15][6]' => '1',
  3. '[25][6]' => '2',
  4. '[35][6]' => '3',
  5. )
  6. $time_table=print_r ($table_time_after_work);
  7. while ($table_time_after_work as $key_time_after_work => $time_after_work){
  8. if ($key_time_after_work == '$time_table'){
  9. $set_time_after_work = $time_after_work;
  10. }
  11. }


Chodziło o coś takiego?
nospor
Po pierwsze nie WHILE a FOREACH
A po drugie dostales ode mnie linki - zapoznaj sie z nimi, bo tam masz odpowiedz jak sie buduje teksty łączone ze zmiennymi
Kamis
  1. $table_time_after_work = array (
  2. '[15][6]' => '1',
  3. '[25][6]' => '2',
  4. '[35][6]' => '3',
  5. )
  6. foreach ($table_time_after_work as $key_time_after_work => $time_after_work){
  7. if ($key_time_after_work == '{[$p_bug_data->priority]}.{[$p_bug_data->project_id]}'){
  8. $set_time_after_work = $time_after_work;
  9. }
  10. }


Mała podpowiedź?
nospor
Miales zapoznac sie a nie przejrzec po lebkach :/
Zas co do {} to miales podaną całą mase przykładów :/

Zmienne widoczne sa tylko w cudyzslowiach a nie w apostrofach....
"[{$p_bug_data->priority}][{$p_bug_data->project_id}]"
Jeszcze raz zobacze ze tak zlewasz prostą lekture, tematy twoje bede zamykal
Kamis
Dzięki. Przepraszam.

A co tutaj robię źle?
facepalmxd.gif

  1. <?php
  2. $actual_number_week = date("l");
  3. //[dzien_tygodnia] => poczatek_pracy_godzina|poczatek_pracy_minuty|koniec_pracy_godzina|koniec_pracy_m
    inuty
  4. function what_time($actual_number_week){
  5.  
  6. $table_office_time = array (
  7. 'Monday' => '0|30|15|30',
  8. 'Tuesday' => '1|30|15|30',
  9. 'Wednesday' => '2|32|12|32',
  10. 'Thursday' => '3|30|15|30',
  11. 'Friday' => '4|30|15|30',
  12. 'Saturday' => '5|30|15|30',
  13. 'Sunday' => '6|30|15|30'
  14. );
  15.  
  16. foreach ($table_office_time as $table_office_actual_number_week => $table_office_time_work){
  17. if ($table_office_actual_number_week == "{$actual_number_week}"){
  18. list($table_office_time_work_sh, $table_office_time_work_sm, $table_office_time_work_eh, $table_office_time_work_em) =
  19. explode("|", $table_office_time_work );
  20. }
  21. return $table_office_time_work_sh;
  22. return $table_office_time_work_sm;
  23. return $table_office_time_work_eh;
  24. return $table_office_time_work_em;
  25. }
  26.  
  27. }
  28. echo $what_time->$table_office_time_work_sh;
  29. ?>
nospor
RETURN w funkcji moze byc tylko JEDEN gdyz NATYCHMIAST konczy on dzialanie funkcji

Nie wiem tez czy jest sens bys dawal RETURN w petli, gdy po pierwszym RETURN jak juz mowilem funkcja sie konczy a co za tym idzie petla juz sie wiecej razy nie wykona.
ghost1511
Cytat(Kamis @ 25.03.2014, 10:26:21 ) *
Dzięki. Przepraszam.

A co tutaj robię źle?
facepalmxd.gif

  1. <?php
  2. $actual_number_week = date("l");
  3. //[dzien_tygodnia] => poczatek_pracy_godzina|poczatek_pracy_minuty|koniec_pracy_godzina|koniec_pracy_m
    inuty
  4. function what_time($actual_number_week){
  5.  
  6. $table_office_time = array (
  7. 'Monday' => '0|30|15|30',
  8. 'Tuesday' => '1|30|15|30',
  9. 'Wednesday' => '2|32|12|32',
  10. 'Thursday' => '3|30|15|30',
  11. 'Friday' => '4|30|15|30',
  12. 'Saturday' => '5|30|15|30',
  13. 'Sunday' => '6|30|15|30'
  14. );
  15.  
  16. foreach ($table_office_time as $table_office_actual_number_week => $table_office_time_work){
  17. if ($table_office_actual_number_week == "{$actual_number_week}"){
  18. list($table_office_time_work_sh, $table_office_time_work_sm, $table_office_time_work_eh, $table_office_time_work_em) =
  19. explode("|", $table_office_time_work );
  20. }
  21. return $table_office_time_work_sh;
  22. return $table_office_time_work_sm;
  23. return $table_office_time_work_eh;
  24. return $table_office_time_work_em;
  25. }
  26.  
  27. }
  28. echo $what_time->$table_office_time_work_sh;
  29. ?>


Ciężko się trochę połapać w tym Twoim kodzie. Tak na początek: po pierwszym napotkanym 'return' funkcja kończy działanie. a więc nie dostaniesz 4 wyników. Zwróć wynik w postaci tablicy smile.gif

edit:
Nospor jak zwykle szybszy smile.gif
Kamis
Dzięki. Co nie zmienia sytuacji, że coś jest nadal źle bo nie zwraca mi moich czterech wartości...

  1. <?php
  2. $actual_number_week = date("l");
  3. function what_time($actual_number_week){
  4.  
  5. $table_office_time = array (
  6. 'Monday' => '0|30|15|30',
  7. 'Tuesday' => '1|30|15|30',
  8. 'Wednesday' => '2|32|12|32',
  9. 'Thursday' => '3|30|15|30',
  10. 'Friday' => '4|30|15|30',
  11. 'Saturday' => '5|30|15|30',
  12. 'Sunday' => '6|30|15|30'
  13. );
  14.  
  15. foreach ($table_office_time as $table_office_actual_number_week => $table_office_time_work){
  16. if ($table_office_actual_number_week == "{$actual_number_week}"){
  17. list($table_office_time_work_sh, $table_office_time_work_sm, $table_office_time_work_eh, $table_office_time_work_em) =
  18. explode("|", $table_office_time_work );
  19. }
  20. }
  21. return;
  22. }
  23. echo $table_office_time_work_sh;
  24. echo $table_office_time_work_sm;
  25. echo $table_office_time_work_eh;
  26. echo $table_office_time_work_em;
  27. echo $what_time->$table_office_time_work_sh;
  28. ?>
Turson
return; <- nie uwazasz, ze tu czegos brakuje, jak chocby jakiejs zmiennej ktora zwracasz?
Kamis
  1. return $table_office_time_work_sh,$table_office_time_work_sm,$table_office_time_work_eh,$table_office_time_work_em;

a w ogóle dobrze się odwołuję do tej funkcji?
ZaXaZ
Cytat(Kamis @ 25.03.2014, 10:37:42 ) *
Dzięki. Co nie zmienia sytuacji, że coś jest nadal źle bo nie zwraca mi moich czterech wartości...

  1. <?php
  2. $actual_number_week = date("l");
  3. function what_time($actual_number_week){
  4.  
  5. $table_office_time = array (
  6. 'Monday' => '0|30|15|30',
  7. 'Tuesday' => '1|30|15|30',
  8. 'Wednesday' => '2|32|12|32',
  9. 'Thursday' => '3|30|15|30',
  10. 'Friday' => '4|30|15|30',
  11. 'Saturday' => '5|30|15|30',
  12. 'Sunday' => '6|30|15|30'
  13. );
  14.  
  15. foreach ($table_office_time as $table_office_actual_number_week => $table_office_time_work){
  16. if ($table_office_actual_number_week == $actual_number_week){ //skasowałem "{ i }"
  17. list($table_office_time_work_sh, $table_office_time_work_sm, $table_office_time_work_eh, $table_office_time_work_em) =
  18. explode("|", $table_office_time_work );
  19. }
  20. }
  21. return true; //zwroc coś skoro return uzywasz jak nie to true.
  22. //--edit-- wpisz po przecinku nazwy zmiennych (te które chcesz użyć w echo).
  23. }
  24. echo $table_office_time_work_sh;
  25. echo $table_office_time_work_sm;
  26. echo $table_office_time_work_eh;
  27. echo $table_office_time_work_em;
  28. echo $what_time->$table_office_time_work_sh; //a to przejście chyba złe jest lub ja nie doedukowany, -> się używa do dostępu funkcji/zmiennej klasy, czy ja czegoś niewiem?
  29. ?>
IProSoft
Na podstawie Twojego toku rozumowania:
  1. $actual_number_week = date("l");
  2.  
  3. function what_time( $actual_number_week )
  4. {
  5.  
  6. $table_office_time = array(
  7. 'Monday' => '0|30|15|30',
  8. 'Tuesday' => '1|30|15|30',
  9. 'Wednesday' => '2|32|12|32',
  10. 'Thursday' => '3|30|15|30',
  11. 'Friday' => '4|30|15|30',
  12. 'Saturday' => '5|30|15|30',
  13. 'Sunday' => '6|30|15|30'
  14. );
  15.  
  16. foreach ( $table_office_time as $table_office_actual_number_week => $table_office_time_work )
  17. {
  18. if ( $table_office_actual_number_week == $actual_number_week )
  19. {
  20.  
  21. list( $table_office_time_work_sh, $table_office_time_work_sm, $table_office_time_work_eh, $table_office_time_work_em ) = explode("|", $table_office_time_work );
  22.  
  23. return array(
  24. 'table_office_time_work_sh' => $table_office_time_work_sh,
  25. 'table_office_time_work_sm' => $table_office_time_work_sm,
  26. 'table_office_time_work_eh' => $table_office_time_work_eh,
  27. 'table_office_time_work_em' => $table_office_time_work_em,
  28. );
  29. }
  30. }
  31.  
  32. return false;
  33.  
  34. }
  35.  
  36. $table_office = what_time( $actual_number_week );
  37.  
  38. if( !empty( $table_office ) )
  39. {
  40. print_r( $table_office );
  41. }


Przyjrzyj się i zobacz co zwróci funkcja.
Kamis
Ok. Zwrócił kolejną tablicę.
Rozumiem, że napisałem to "nie po Bożemu". Czy mogę prosić o podpowiedź jak to zrobić dobrze?
nospor
Toc przeciez IProSoft podal ci jak to masz zrobic. Czego jeszcze nie rozumiesz? Wszystko juz masz podane
Kamis
Wiem, ale po prostu zastanawiam się czy można było to napisać lepiej - bo się uczę.
To dotyczy
  1. Na podstawie Twojego toku rozumowania:
nospor
Twoja petla jest totalnie zbedna.

echo $table_office_time[$actual_number_week];
I juz masz dane ktore cie interesują
Kamis
Trochę zmodyfikowałem skrypt. Jest prostrzy.Uczę się. Dzięki za porady.
Mogę jeszcze prosić o podpowiedź co tym razem robię źle?

  1. <?php
  2. $actual_number_week = date("l");
  3. function what_time( $actual_number_week ){
  4.  
  5. $table_office_time = array(
  6. "Monday"=>array("1","30","15","30"),
  7. "Tuesday"=>array("2","30","15","30"),
  8. "Wednesday"=>array("3","30","15","30"),
  9. "Thursday"=>array("4","30","15","30"),
  10. "Friday"=>array("5","30","15","30"),
  11. "Saturday"=>array("6","30","15","30"),
  12. "Sunday"=>array("7","30","15","30")
  13. );
  14. //print($table_office_time["$actual_number_week"][0]);
  15. $a=$table_office_time["$actual_number_week"][0];
  16. $b=$table_office_time["$actual_number_week"][1];
  17. $c=$table_office_time["$actual_number_week"][2];
  18. $d=$table_office_time["$actual_number_week"][3];
  19. return {$a},{$b},{$c},{$d};
  20. }
  21.  
  22. print($a);
  23.  
  24. ?>
ghost1511
Ludzie święci. Forum to nie kompilator. Jaki komunikat błędu zwraca Ci skrypt?! Przeczytaj poszukaj w internecie, spróbuj naprawić. Kolejny błąd? Szukaj ponownie. W dodatku miałeś poprzednio wytłumaczone co robisz źle. Teraz popełniasz ten sam błąd i znowu pytasz co jest źle. Wszystko masz w przykładzie podanym przez IProSoft.
Kamis
Nie mam komunikatu błędu a piszę w notatniku. Czy zawsze w return muszę wstawiać tablicę? Nie mogę pojedynczych wartości?
nospor
Jak chcesz zwrocic kilka wartosci, to musisz dac w return TABLICE. To logiczne.

No i co to jest: {$a} ?
To jest zwykla zmienna i ma byc poprostu $a

A bledow nie masz, bo ich nie wyswietlasz... wlacz wyswietlanie wszystkich bledow to bledy zobaczysz
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.