הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [פונקציות] אחסון מערך רב מימדי בDATABASE (https://hosts.co.il/forums/showthread.php?t=79998)

Shay Ben Moshe 08-12-09 14:12

[פונקציות] אחסון מערך רב מימדי בDATABASE
 
שלום לכם,
לא פעם ולא פעמיים נתקלתי במקרים (שלי או של אחרים) שהיה צורך להשתמש במערך רב מימדי, אך היה צורך גם לאחסן את כל הנתונים בDATABASE.
עכשיו ראיתי מישהו באיזה פורום שצריך משהו כזה, אז החלטתי לכתוב פשוט דרך לעשות את זה.

מה שעשיתי זה לקחתי את המערך והפכתי אותו לSTRING, שמופרד על ידי תווים שלא כל כך בשימוש (התווים הראשונים בASCII TABLE).
יצא קצת מורכב גם לי:
PHP קוד:

function to_dbdata($var,$varname='dbdata',$level=1)
{
    
$new_string $varname.chr(1);
    
    if(
is_array($var))
    {
        
$new_string .= chr($level+2);
        foreach(
$var as $key=>$value)
        {
            
$new_string .= to_dbdata($value,$key,$level+1);
        }
        
$new_string .= chr($level+3);
    }
    elseif(
is_string($var))
        
$new_string .= $var;
    
    
$new_string .= chr(2);
    return 
$new_string;
}

function 
from_dbdata($dbdata,$level=1)
{
    
preg_match_all('#([a-zA-Z0-9_]+)'.chr(1).chr($level+2).'(.*)'.chr($level+3).chr(2).'#Us',$dbdata,$match1);
    
    for(
$i=0;$i<count($match1[1]);$i++)
    {
        
$dbdata str_replace($match1[0][$i],'',$dbdata);
        
$new_data[$match1[1][$i]] = from_dbdata($match1[2][$i],$level+1);
    }
    
    
preg_match_all('#([a-zA-Z0-9_]+)'.chr(1).chr($level+2).'{0}(.*)'.chr($level+3).'{0}'.chr(2).'#Us',$dbdata,$match2);
    for(
$i=0;$i<count($match2[1]);$i++)
    {
        
$new_data[$match2[1][$i]] = $match2[2][$i];
    }
    
    return 
$new_data;


דוגמה לשימוש:
קוד:
PHP קוד:

$cool_array = array("hey"=>"there",array("yes","no"=>"sir"),"what is up");
print_r(from_dbdata(to_dbdata($cool_array,'cool_array'))); 

פלט:
PHP קוד:

Array
(
    [
cool_array] => Array
        (
            [
0] => Array
                (
                    [
0] => yes
                    
[no] => sir
                
)

            [
hey] => there
            
[1] => what is up
        
)



אשמח לשמוע מה דעתכם על הפונקצייה המכוערת שלי.

intercooler3819 08-12-09 14:53

ואלה סיבכת
בשביל מה יש JSON_ENCODE? גם לאובייקטים [=

Erez | TrustMedia.co.il 08-12-09 15:37

serialize ו-unserialize ופשוט להכניס למסד

Elad-A 09-12-09 11:08

ציטוט:

נכתב במקור על ידי WiPi (פרסם 748590)
serialize ו-unserialize ופשוט להכניס למסד

....

Shay Ben Moshe 09-12-09 14:44

צודקים, אכן פשוט לא הכרתי את הפונקציות האלו. לא יצא לי עוד לעקוף את הבעיה הזאת בדרך הזאת.
שמח שלמדתי משהו חדש =]

AlmogBaku 09-12-09 18:55

serialize
var_export
json

יש מלא אפשרויות.. חבל על המאמץ..


כל הזמנים הם GMT +2. הזמן כעת הוא 01:28.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ