Thread View: pl.comp.lang.php
11 messages
11 total messages
Started by ajek
Tue, 21 Aug 2001 13:09
return TABLICA
Author: ajek
Date: Tue, 21 Aug 2001 13:09
Date: Tue, 21 Aug 2001 13:09
25 lines
1248 bytes
1248 bytes
Witam szanownych grupowiczow
Dopiero zaczynam poznawac PHP i mam problem
jest sobie funkcja
function cos () {
$i=0;
while ($i<=10)
$tmp[$i][1]=$i;
$tmp[$i][2]=$i;
$tmp[$i][3]=$i;
$tmp[$i][4]=$i;
$tmp[$i][5]=$i;
$i+=1;
}
return $tmp;
}
a potem robie tak
$wynik=cos();
dlaczego wynik jest pusty ?
nier zwraca mi tej tablicy
LUDZIE pomocy
Z pozdrowieniami ajek
Re: return TABLICA
Author: [sis]
Date: Tue, 21 Aug 2001 14:22
Date: Tue, 21 Aug 2001 14:22
27 lines
1531 bytes
1531 bytes
> Dopiero zaczynam poznawac PHP i mam problem
> jest sobie funkcja
zmien nazwe funkcji na inna. cos juz istnieje dla kosinusa. :>
> function cos () {
> $i=0;
> while ($i<=10) { <== brakowalo tego
// [cut]
> }
> return $tmp;
> }
> $wynik=cos();
> dlaczego wynik jest pusty ?
> nier zwraca mi tej tablicy
u mnie od razu pokazuje ze nie moze powtornie zadeklarowac funkcji.
pozdrawiam,
Kamil
--
::''::./: dEsIgn iNSPiraTioN ..::':..::.:'::...:.>>>....
:: Kazdy z nas, gdzies gleboko w srodku jest dzieckiem ::
:: Kamil sisqo(at)board.pl - http://3575206806/ ::
::,:::::,:::::::::::::::::,:::,:::,:::::::::::::::::::,::
Re: return TABLICA
Author: Aleksander Piotrowski
Date: Tue, 21 Aug 2001 14:23
Date: Tue, 21 Aug 2001 14:23
22 lines
1229 bytes
1229 bytes
On Tue, 21 Aug 2001 15:09:39 +0200, ajek <ajek007@wp.pl> wrote:
> jest sobie funkcja
> function cos () {
> $i=0;
> while ($i<=10)
> $tmp[$i][1]=$i;
> $tmp[$i][2]=$i;
> $tmp[$i][3]=$i;
> $tmp[$i][4]=$i;
> $tmp[$i][5]=$i;
> $i+=1;
> }
> return $tmp;
>
> }
po pierwsze dodaj klamre otwierajaca po: while( $i <= 10 )
po drugie zamien nazwe f-cji.
dlaczego? zobacz: http://www.php.net/cos
po tych zmianach kod dziala ( php 4.0.6 )
Re: return TABLICA
Author: leming nine
Date: Tue, 21 Aug 2001 15:28
Date: Tue, 21 Aug 2001 15:28
51 lines
2326 bytes
2326 bytes
1. function cos() {
2. $i = 0;
3. while ($i <= 10)
4. $tmp[$i][1] = $i;
5. $tmp[$i][2] = $i;
6. $tmp[$i][3] = $i;
7. $tmp[$i][4] = $i;
8. $tmp[$i][5] = $i;
9. $i += 1;
10. }
11. return $tmp;
12. }
ad. 1: funkcja o nazwie 'cos' już istnieje.
ad. 2, 3, 9: zamiast ręcznie inicjować, sprawdzać
warunek oraz inkrementować zmienną iterującą
lepiej byłoby użyć specjalnie do tego przeznaczonej
konstrukcji 'for'.
ad. 3-8: dlaczego nie ma tutaj zastosowanych parametrów,
tylko funkcja zwraca _zafiksowane_ wartości?!
Tak nie powinno się programować, ponieważ funkcje
nie będą przydatne - nie przewidują każdej dostępnej
kombinacji. To jak w matematyce -- funkcje powinny
być jak wzory, przez które jedynie coś się przetwarza.
Czyli nie:
function zwróćPoleTrójkąta() { return 5;}
...lecz:
function poleTrojkata($a, $h) {
return (($a / 2) * $h);
}
Rozumiesz? To są podstawy programowania!
ad. 9: jeśli stosować skróty, to na całego! Dlaczego
używasz operatora skróconego '+=' skoro mógłbyś
zastosować '++'?
Na koniec wskazówka, że ja bym tą funkcję napisał tak:
function foo($n, $m) {
for ($i = 0; $i <= $n; $i++) {
for ($j = 1; $j < $m + 1; $j++) {
$tmp[$i][$j] = $i;
}
}
return $tmp;
}
$result = foo(10, 5);
...co prawda nie widzę zastosowania :)
--
l9
Re: return TABLICA
Author: ajek
Date: Tue, 21 Aug 2001 16:44
Date: Tue, 21 Aug 2001 16:44
44 lines
2058 bytes
2058 bytes
Witam
Dzieki za odpowiedz, ale....
Celem mojego posta nie byla wcale nauka programowania to mam juz za soba.
Idea funkcji (fakt nie pomyslalem nazywajac ja COS - tylko na potrzeby tego
posta zostala tak nazwana, a w rzeczywistosci robi ona cos zupelnie innego i
jest napisana poprawnie z parametrami itd ...) chodzilo o to zeby ta
smieszna funkcyjka zwrocila mi jako wynik cala tablice - dwuwymiarowa.
Zapisy byl taki jak przedstwaiacie jednak funkcja nie zwraca mi tej tablicy.
Nie napisalem jednego funkcja COS (wiem istniejej cosinus) niech bedzie cos1
jest w innym pliku. Ten plik jest dolaczany za pomoca include
function cos1($n)
{
$j=0;
while (tu jest warunek)
{
for ($i=0;$i<$n;$i++)
{
$tmp[$j][$i]=$i;
}
$j++;
}
return $tmp
}
a w drugim pliku
<? include plik1.php?>
<?
$wynik=cos1(5);
// a potem wypisywanie
// to test dla sprawdzenia wartosci w tablicy
$j=0;
while (warunek)
{
for ($i=0;i<5;$i++)
{
echo $wynik[$j][$i];
}
$j++;
}
?>
i niestety to mi nie dziala tablica jest pusta
Z pozdrowieniami ajek
Re: return TABLICA
Author: [ sis ]
Date: Tue, 21 Aug 2001 18:32
Date: Tue, 21 Aug 2001 18:32
35 lines
1703 bytes
1703 bytes
to jest prawdziwy przyklad?
a nie moze byc:
<?
#file1.php
function my_liczenie($n)
{ for ($a=0;$a<100;$a++)
// tu masz Swoj warunek
if ($warunkek==true) { break; }
// lub inny
{ for ($b=0;$b<$n;$b++)
{ $arry[$a][$b]=$a; }
}
return $array;
}
?>
<?
#skrypt
include "file1.php";
$n=10;
$wynik=my_liczenie($n);
print "<pre>";
print_r($wynik);
?>
napisz jaki masz ten warunek, albo lepiej podeslij caly skrypt na mejla.
pozdrawiam,
Kamil
--
::''::./: dEsIgn iNSPiraTioN ..::':..::.:'::...:.>>>....
:: Kazdy z nas, gdzies gleboko w srodku jest dzieckiem ::
:: Kamil sisqo(at)board.pl - http://3575206806/ ::
::,:::::,:::::::::::::::::,:::,:::,:::::::::::::::::::,::
Re: return TABLICA
Author: ajek
Date: Tue, 21 Aug 2001 19:21
Date: Tue, 21 Aug 2001 19:21
12 lines
1527 bytes
1527 bytes
Witam Problem nie jest w sposobie wypelnienia tablicy w funkcji wszystko elegancko sie wypelnia Cala tablica tmp zawiera to co chce. Przed wyjsciem z funkcji wypisuje ja sobie i wszystko jest OK ale jak w funkcji zrobie tylko return $tmp to nic nie zwraca (wywolanie $wynik=cos1() --- funkcja cos1 ma na koncu poprawnie wypelniona tablice $tmp i na koncu jest return $tmp) ta tablica $wynik jest pusta a count($wynik) zwraca 0 Problem jest w przekazywaniu tej tablicy. Moze zle cos robie ale w C++ takie cosik dzialalo a tu nie chce Z pozdrowieniami ajek
Re: return TABLICA
Author: [ sis ]
Date: Tue, 21 Aug 2001 19:25
Date: Tue, 21 Aug 2001 19:25
16 lines
1380 bytes
1380 bytes
> ta tablica $wynik jest pusta a count($wynik) zwraca 0
count tablicy wielowymiarowej zawsze da Ci 0.
sprobuj po deklaracji funkcji umiescic:
function nazwa($parametry) {
global $tmp; <==
i w skrypcie odwolaj sie do danych poprzez $tmp, albo $GLOBALS[tmp];
jesli to nie dziala, masz skopany skrypt.
pozdrawiam,
Kamil
--
nomore(!spam)today
Re: return TABLICA
Author: leming nine
Date: Tue, 21 Aug 2001 19:37
Date: Tue, 21 Aug 2001 19:37
11 lines
1164 bytes
1164 bytes
> ta tablica $wynik jest pusta a count($wynik) zwraca 0 to zamiast count() używaj sizeof(), poza tym spróbuj print_r($wynik). Sprawdź, czy aby _na_pewno_ ta tablica jest pusta... > Problem jest w przekazywaniu tej tablicy. Moze zle cos > robie ale w C++ takie cosik dzialalo a tu nie chce -- l9
Re: return TABLICA
Author: leming nine
Date: Tue, 21 Aug 2001 19:51
Date: Tue, 21 Aug 2001 19:51
60 lines
2782 bytes
2782 bytes
> Celem mojego posta (...)
kapuję, sorry w takim razie za uczenie księdza pacierza ;)
Po prostu pomyślałem sobie, że warto coś takiego napisać,
nawet gdybyś Ty nie skorzystał -- czyta to wielu innych
ludzi, którzy o takich zasadniczych sprawach nie mają
pojęcia...
> chodzilo o to zeby ta smieszna funkcyjka zwrocila mi jako
> wynik cala tablice - dwuwymiarowa. Zapisy byl taki jak
> przedstwaiacie jednak funkcja nie zwraca mi tej tablicy.
nie możliwe. Wypróbuj ten kod:
<?php
function myFunc() {
return array(
array("foo", "bar", "dot", "com"),
array("lorem", "ipsum", "dolor", "sit")
);
}
echo "<pre>"; print_r(myFunc()); echo "</pre>";
?>
Jeśli to nie zadziała -- PHP jest rąbnięte.
> <? include plik1.php?>
Nie wiem, czy nie napisałeś tak tylko dla skrócenia (tak,
jak niektórzy piszą klucze w tablicach asocjacyjnych, bez
cudzysłowów), ale proponuję przejście na w miarę
uniwersalny sposób kodowania w PHP:
1. zawsze używając klamr,
2. używać '<?php' zamiast po prostu '<?',
3. instrukcje nawet jeśli nie istnieje taka konieczność,
jednak zakańczać średnikami,
4. nie używać konstrukcji 'include' (i podobnych) w wersjach
bez nawiasów,
5. używając wcięć jak się należy - po każdej klamrze
dodawać kolejny tabulator po nowej linii, chyba, że się
klamrę kończy.
> // a potem wypisywanie to test dla sprawdzenia
> // wartosci w tablicy
> $j = 0;
> while (warunek) {
> for ($i=0;i<5;$i++) {
> echo $wynik[$j][$i];
> }
> $j++;
> }
> i niestety to mi nie dziala tablica jest pusta
otóż to. Zamiast ręcznie wypisywać dane z obiektów/tablic/różnych
innych rzeczy używać print_r() albo var_dump(). One są niezawodne,
działają do wszystkiego, czasem można się "machnąć".
Spróbuj zamiast powyższego kodu zastosować print_r($wynik).
--
l9
Re: return TABLICA
Author: ajek
Date: Wed, 22 Aug 2001 05:21
Date: Wed, 22 Aug 2001 05:21
16 lines
1400 bytes
1400 bytes
Witam DZIEKI ZA POMOC count dziala na tablicy wielowymiarowej A blad byl moj. Dwa dni szukalem bledu i dlatego tu napisalem Dzieki jeszcze raz za zainteresowanie A wiecie jaki byl blad $wyniki=cos1(); echo $wynik[1][1]; widzicie blad ja po dwoch dniach go znalazlem jak sie wyspalem wyniki i wynik, tak to jest jak nie trzeba deklarowac zmiennych Jeszcze raz dzieki za zainteresowanie Pozdrowienia ajek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads