🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.php
11 messages
11 total messages Started by ajek Tue, 21 Aug 2001 13:09
return TABLICA
#484
Author: ajek
Date: Tue, 21 Aug 2001 13:09
25 lines
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
#485
Author: [sis]
Date: Tue, 21 Aug 2001 14:22
27 lines
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
#486
Author: Aleksander Piotrowski
Date: Tue, 21 Aug 2001 14:23
22 lines
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
#487
Author: leming nine
Date: Tue, 21 Aug 2001 15:28
51 lines
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
#488
Author: ajek
Date: Tue, 21 Aug 2001 16:44
44 lines
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
#489
Author: [ sis ]
Date: Tue, 21 Aug 2001 18:32
35 lines
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
#490
Author: ajek
Date: Tue, 21 Aug 2001 19:21
12 lines
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
#491
Author: [ sis ]
Date: Tue, 21 Aug 2001 19:25
16 lines
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
#492
Author: leming nine
Date: Tue, 21 Aug 2001 19:37
11 lines
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
#493
Author: leming nine
Date: Tue, 21 Aug 2001 19:51
60 lines
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
#494
Author: ajek
Date: Wed, 22 Aug 2001 05:21
16 lines
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