לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 08-07-2009, 12:02
צלמית המשתמש של bla_bla
  bla_bla bla_bla אינו מחובר  
 
חבר מתאריך: 14.07.04
הודעות: 345
הפיכת מחרוזת למערך רב מימדי

חיפשתי פה בפורום, בגוגל, בphp.net, ואני פשוט לא מוצא. אולי אני לא מחפש בצורה הנכונה, אבל פשוט לא מוצא.

מה שאני רוצה לעשות זה ככה, להפוך את המחרוזת הבאה למערך.

קוד PHP:
 $str 'Array( "bla" => 1,
                "bla2" => 0,
                "blabla" => array ( "option" => 1,
                            "option2" => 1,
                            "option3" => array ( 1 => 1,
                                        2 => 2,
                                        3 => 3),
                            "option4" => 0,
                            "option5" => "Maccabi Haifa VS. Hapoel Tel-Aviv",
                            "option6" => "1|2|3|4|5|6|7"),
                "bla3" => "I LOVE TO PLAY WITH PHP",
                "bla4" => "WHAT THE FUCK ?!?!")'



ניסיתי לעשות משתנה משתנה ($$str)' ניסיתי להשתמש בeval ושום דבר לא עובד. פונקציה implode לא תעזור לי כאן, משום שאני צריך מערך רב מימדי.

רעיונות? מישהו?
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://gyous.djsgoa.co.il/forum/sign/gal.php?start_date=30/7/2006&end_date=30/7/2009&-=.jpg]

אוכלים חרא. נושמים אבק. חושבים גריז. יוצאים זבל. ישנים בעמידה. נלחמים בישיבה.
אם יש לך ביצים, בוא לשיריון.


נערך לאחרונה ע"י bla_bla בתאריך 08-07-2009 בשעה 12:08.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 08-07-2009, 16:00
  Sagilevi Sagilevi אינו מחובר  
 
חבר מתאריך: 07.10.04
הודעות: 1,277
בתגובה להודעה מספר 1 שנכתבה על ידי bla_bla שמתחילה ב "הפיכת מחרוזת למערך רב מימדי"

מצאתי פונקציה של recursive implode ו-recursive implode,
באתר הרשמי של PHP בדף implode (לא בדקתי עוד, אתה מוזמן לנסות):
קוד PHP:
 This is a recursive implode function that can be used on multi-dimensional arraysThe explode function has also obeen included.

<?
php
                
//  Can implode an array of any dimension
        //  Uses a few basic rules for implosion:
        //        1. Replace all instances of delimeters in strings by '/' followed by delimeter 
        //        2. 2 Delimeters in between keys
        //        3. 3 Delimeters in between key and value
        //        4. 4 Delimeters in between key-value pairs
        
function implodeMDA($array$delimeter$keyssofar '') {
            
$output '';
            foreach(
$array as $key => $value) {
                if (!
is_array($value)) {
                    
$value str_replace($delimeter'/'.$delimeter$value);
                    
$key str_replace($delimeter'/'.$delimeter$key);
                    if (
$keyssofar != ''$key $key.$delimeter.$delimeter;
                    
$pair $key.$keyssofar.$delimeter.$delimeter.$delimeter.$  value;
                    if (
$output != ''$output .= $delimeter.$delimeter.$delimeter.$delimeter;
                    
$output .= $pair;
                }
                else {
                    if (
$output != ''$output .= $delimeter.$delimeter.$delimeter.$delimeter;
                    if (
$keyssofar != ''$key $key.$delimeter.$delimeter;
                    
$output .= $this->implodeMDA($value$delimeter$key.$keyssofar);
                }
            }
            return 
$output;
        }
        
        
        
//  Can explode a string created by corresponding implodeMDA function
        //  Uses a few basic rules for explosion:
        //        1. Instances of delimeters in strings have been replaced by '/' followed by delimeter 
        //        2. 2 Delimeters in between keys
        //        3. 3 Delimeters in between key and value
        //        4. 4 Delimeters in between key-value pairs
        
function explodeMDA($string$delimeter) {
            
$output = array();
            
$pair_delimeter $delimeter.$delimeter.$delimeter.$delimeter;
            
$pairs explode($pair_delimeter$string);
            foreach (
$pairs as $pair) {
                
$keyvalue_delimeter $delimeter.$delimeter.$delimeter;
                
$keyvalue explode($keyvalue_delimeter$pair);
                
$key_delimeter $delimeter.$delimeter;
                
$keys explode($key_delimeter$keyvalue[0]);
                
$value str_replace('/'.$delimeter$delimeter$keyvalue[1]);
                
$keys[0] = str_replace('/'.$delimeter$delimeter$keys[0]);
                
$pairarray = array($keys[0] => $value);
                for (
$counter 1$counter count($keys); $counter++) {
                    
$pairarray = array($keys[$counter] => $pairarray);
                }
                
$output array_merge_recursive($output$pairarray);
            }
            return 
$output;
        }
?> 


עריכה: מצאתי עוד אחד למקרה שלא יעבוד:

קוד PHP:
<?php

function implode_md$glue$array$key NULL$list NULL )
{
    if( !
is_array$array ) ) 
        return 
$array;
    if( !
sizeof$array ) ) 
        return 
"";
    if( !
is_null$key ) )
    {
        if( 
strpos$key"." ) )
        {
            
$keys array_reverseexplode"."$key ) );
            
$currentKey array_pop$keys );
            if( 
sizeof$keys ) ) $keys implode"."$keys );
            else 
$keys implode""$keys );
        }
        else
        {
            
$currentKey $key;
            
$keys NULL;
        }
        if( 
array_key_exists$currentKey$array ) ) 
            return 
implode_md$glue$array[$currentKey], $keys$list );
        else 
            return 
"";
    }
    if( !empty( 
$list ) )
    {
        
$last array_pop$array );
        if( 
count$array ) ) 
            return 
implode_md$glue$array$key ) . $list $last";
        else 
            return 
$last;
    }
    
$ret = array();
    for( 
$i 0$i sizeof$array ); $i++ )
        if( 
is_array$array[$i] ) ) $ret[] = implode_md$glue$array[$i], $key$list );
        else 
$ret[] = $array[$i];
    return 
implode$glue$ret );
}

?>

נערך לאחרונה ע"י Sagilevi בתאריך 08-07-2009 בשעה 16:03.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 19:27

הדף נוצר ב 0.11 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר