Topic: PHP funkcija negrazina return reiksmes

Sveiki, gal kas gali zvilgtelt i funkcija nesuprandu kame kampas, jei vietoj return darau print viskas graziai grazinama jei darau return ishkvietus funkcija ji negrazina nieko:

function get_cats($category_id, $cnt = 0)
{
      global $db;
    
        if ($cnt == 0){
            $cats = array();
        
            $sql_select_categories = $db->query("SELECT is_subcat, parent_id, category_id FROM " . DB_PREFIX . "categories WHERE category_id='$category_id'");
        
        } else {
    
             $sql_select_categories = $db->query("SELECT is_subcat, parent_id, category_id FROM " . DB_PREFIX . "categories WHERE parent_id='$category_id'");
          }
    
    while ($cat_details = $db->fetch_array($sql_select_categories))
    {

        if ($cat_details['is_subcat'] == '>')
            {
                
                 get_cats($cat_details['category_id'], 1);
                 
            } 
            else 
            {
            
                $cats[]= $cat_details['category_id'];
                
            }
    }
    $stringas =(string) implode(',',$cats);
    
    //print $stringas;
    return $stringas;
}

Re: PHP funkcija negrazina return reiksmes

O kaip tikrini ar nieko negrąžina?

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: PHP funkcija negrazina return reiksmes

Kad pamatytum tokios funkcijos rezultata , reikia jos grazinta reiksme priskirti kokiam kintamajam ir tada su print ar echo spausdinti arba ja pacia panaudoti spausdinimo sakinyje.O pagal tai kad tavo funkcija veikia kai rasai print sprendziu kad ja naudoji paprastai issaukdamas o ne spausdindamas ar kitaip naudodamas jos grazinta reiksme.

Re: PHP funkcija negrazina return reiksmes

reikia pasigilinti kaip teisingai panaudoti rekursinę f-ją. O čia ji naudojama.

Kiek maigyklių sudėvėjai ?

Re: PHP funkcija negrazina return reiksmes

Kodėl nepasidarius hierachinio medžio pagal šį pavyzdį: http://dev.mysql.com/tech-resources/art … -data.html

Re: PHP funkcija negrazina return reiksmes

minde wrote:

Kodėl nepasidarius hierachinio medžio pagal šį pavyzdį: http://dev.mysql.com/tech-resources/art … -data.html

negaliu pakeisti kategoriju strukturos, kadangi  tai jau gatavas CMS  ir reikia prisiderinti prie to kas yra

Re: PHP funkcija negrazina return reiksmes

zygis wrote:

O kaip tikrini ar nieko negrąžina?

<? print get_cats($category["id"]);?>


jei pacoj funkcijo paliktas printas jis grazina   reiksme, jei paliktas return negrazina

Re: PHP funkcija negrazina return reiksmes

Pas tave yra rekursija, todėl gražinamas rezultatas turi būti pačioje funkcijoje atitinikamai tikrinamas, kad susidarytų rekursijos užbaigimas, kitaip aš nelabai įsivaizduoju ką tu pasieksi (-; O jeigu nesupranti, kaip turi veikti rekursija - naudok duomenų struktūrą, kuriai jos nereikia. Rekursijų tokioje vietoje nerekomenduočiau naudoti, nes galimi sunkiai prognozuojami scenarijai.

Re: PHP funkcija negrazina return reiksmes

minde wrote:

Pas tave yra rekursija, todėl gražinamas rezultatas turi būti pačioje funkcijoje atitinikamai tikrinamas, kad susidarytų rekursijos užbaigimas, kitaip aš nelabai įsivaizduoju ką tu pasieksi (-; O jeigu nesupranti, kaip turi veikti rekursija - naudok duomenų struktūrą, kuriai jos nereikia. Rekursijų tokioje vietoje nerekomenduočiau naudoti, nes galimi sunkiai prognozuojami scenarijai.

tai rekursija usibaigia kai nebera  is_subcat = ">"

10

Re: PHP funkcija negrazina return reiksmes

$cats[] = get_cats($cat_details['category_id'], 1);

Kiek maigyklių sudėvėjai ?

Re: PHP funkcija negrazina return reiksmes

md5 wrote:

$cats[] = get_cats($cat_details['category_id'], 1);

tai bet ji sukasi iki $cat_details['is_subcat'] == '>'

12

Re: PHP funkcija negrazina return reiksmes

D3MO wrote:
md5 wrote:

$cats[] = get_cats($cat_details['category_id'], 1);

tai bet ji sukasi iki $cat_details['is_subcat'] == '>'

f-ja ant kintamojo $cats[] daro return, ty atiduoda duomenis, tai ir yra rekursija.

Kiek maigyklių sudėvėjai ?

Re: PHP funkcija negrazina return reiksmes

md5 wrote:
D3MO wrote:
md5 wrote:

$cats[] = get_cats($cat_details['category_id'], 1);

tai bet ji sukasi iki $cat_details['is_subcat'] == '>'

f-ja ant kintamojo $cats[] daro return, ty atiduoda duomenis, tai ir yra rekursija.

Aciu:)  suveike viskas puikiai