1 (edited by Ajaks 2011-08-16 12:04:00)

Topic: Masyvo talpinimas i DB(mysql) ir atgal

Sveiki,

Gal kas turi kokia veikiancia funkcija kurios pagalba galima butu paimti asociatyvu masyva, paverstu ji i textine eilute (implode) ir veliau paimtu textine eilute is db ir sukurtu masyva (explode) ISSAUGOJANT visus kiekvieno kintamojo raktus(indexus?) ?

$masyvas (Vardas => 'Petras', Pavarde => 'Petrauskas');

$eilute = implode(',' , $masyvas);

$naujasmasyvas = explode(',' , $eilute);

print_r($naujasmasyvas);

Gauname:

[0] => Petras, [1] => Petrauskas

Bet reikia kad butu:

[Vardas] => Petras, [Pavarde] => Petrauskas

Dekui


Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Re: Masyvo talpinimas i DB(mysql) ir atgal

Paskaityk apie http://php.net/manual/en/function.serialize.php ir http://www.php.net/manual/en/function.unserialize.php

Re: Masyvo talpinimas i DB(mysql) ir atgal

Pavyks visa masyva suserializinti ir poto ji istraukus vel atkurti 1:1?

Reikes pabandyti kaip alternatyva.

Tuo paciu radau funkciju pora kuri atlieka viska tvarkingai su implode/explode:

function implodeAssoc($glue,$arr)
{

/**
* @name implodeAssoc($glue,$arr)
* @description makes a string from an assiciative array
* @parameter glue: the string to glue the parts of the array with
* @parameter arr: array to implode
*/     
    
   $keys=array_keys($arr);
   $values=array_values($arr);

   return(implode($glue,$keys).$glue.implode($glue,$values));
}; 



function explodeAssoc($glue,$str)
{

/**
* @name explodeAssoc($glue,$arr)
* @description makes an assiciative array from a string
* @parameter glue: the string to glue the parts of the array with
* @parameter arr: array to explode
*/ 
    
   $arr=explode($glue,$str);

   $size=count($arr);

   for ($i=0; $i < $size/2; $i++)
       $out[$arr[$i]]=$arr[$i+($size/2)];

   return($out);
};

Re: Masyvo talpinimas i DB(mysql) ir atgal

to Ajaks: ismok naudotis php manualu ir gyvenimas taps lengvesnis.

P.S. tau is esmes tinka serialize/unserialize pagal aplinkybes dar gali gerai tikti ir json_encode/json_decode.

Re: Masyvo talpinimas i DB(mysql) ir atgal

Neodan wrote:

to Ajaks: ismok naudotis php manualu ir gyvenimas taps lengvesnis.

P.S. tau is esmes tinka serialize/unserialize pagal aplinkybes dar gali gerai tikti ir json_encode/json_decode.

php manuala as zinau ir jis cia neprieko. Viso manualo neperskaitysi.

6 (edited by md5 2011-08-17 08:36:01)

Re: Masyvo talpinimas i DB(mysql) ir atgal

naudojant serialize dar ne pro šalį reiktų paverst su base64_encode/decode, dėl duomenų vientisumo.

@Ajaks
tai kad tas manualas ne toks jau didelis. O nusistatymas, kad neperskaitysi tik parodo, kad esi šiek tiek tinginys

Kiek maigyklių sudėvėjai ?

7 (edited by Ajaks 2011-08-17 08:40:24)

Re: Masyvo talpinimas i DB(mysql) ir atgal

md5 wrote:

naudojant serialize dar ne pro šalį reiktų paverst su base64_encode/decode, dėl duomenų vientisumo.

@Ajaks
tai kad tas manualas ne toks jau didelis. O nusistatymas, kad neperskaitysi tik parodo, kad esi šiek tiek tinginys

Cia ne tingejimas o protingas laiko paskirstymas. Gali buti netinginys ir skaityti 'visa interneta' ir visa gyvenima taip ir praleisi tupedamas uz seno monitoriaus ekrano, vis skaitydamas ivairius manualus nuo A iki Z, kai 90% dalyku tau nereikia ir ju neprisiminsi.

php.net skirtas tiems kas zino kokia funkcija ka daro ir reikia greitai prisiminti syntakse arba smulkmenas. Jeigu nori kazka naujo suzinoti (ir greitai), tas saitas visai tam netinkamas. Galbut tai yra viena is priezasciu kodel per paskutiniuosius metus jo lankomumas sumazejo 10 kartu.

8 (edited by md5 2011-08-17 08:57:17)

Re: Masyvo talpinimas i DB(mysql) ir atgal

:) taip taip, po to ateinat čia ir verkšlenat, kodėl neveikia tas ir anas, kai tame pačiame php.net saite yra komentarai su pastebėjimais ir protingais paaiškinimais.

Jau vien iš tavo pateiktų kreivų f-jų pasimatė, kad nelabai tu ten lankaisi ir imi tai kas jau parašyta, neįsigilinęs kiek bugovai jinai veiks

# su savo f-jom implodink ir explodink $arr masyvą
$glue = ',';
$arr = array('a,','b,',',c');

beje tavo samprotavimai niekam neįdomūs, labiau klaidinantys, negu informatyvūs.

Kiek maigyklių sudėvėjai ?

Re: Masyvo talpinimas i DB(mysql) ir atgal

Aš kažkaip manau, kad paskaityti bent apie vieną funkciją tikrai įmanoma ir tai yra gretesnis būdas, nei čia ginčytis.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Masyvo talpinimas i DB(mysql) ir atgal

PHP manualo nereikia viso skaityti, ten gali paskaityti kas kaip veikia, bei komentaruose rasti idomiu minciu. Kitas dalykas net nezinodamas kaip tiksliai f-ja vadinasi ja gali rasti manuale, tereikia zinoti prie ko ji turetu buti priskirta (array, strsing, ...).
Taip pat pravartu ismokti naudotis google.
Taigi  google paklauses "PHP array to db" ketvirtoje pozicijoje gavau linka i PHP: serialize - Manual.
Visko mintinai neismoksi, ir tai kalti mintinai yra nelogiska. Svarbu suprasti veikimo principus ir ismokti esminius pagrindus. Tada net nezinodamas tikslios f-jos pavadinimo gali ja surasti, nes zinai su kuo bus atliekami veiksmai ir kokio +/- tau rezultato reikia.

P.S. yra geras posakis: ismokti PHP yra lengva, taciau ivaldyti ja yra sunku.