7

में PHP Arrays संग्रहीत करना यह एक PHP विशेषज्ञ के लिए आसान होना चाहिए। मुझे update_user_meta फ़ंक्शन के माध्यम से वर्डप्रेस में सरणी को संग्रहीत करने और खींचने में परेशानी हो रही है।वर्डप्रेस उपयोगकर्ता मेटा डेटाबेस

तो मैं एक साहचर्य सरणी तो तरह का निर्माण किया है:

update_user_meta ($ user_id, $ meta_key, $:

Array 
(
    [film_genres] => Array 
     (
      [action] => 50 
      [comedy] => 50 
      [crime] => 50 
      [documentary] => 50 
      [drama] => 50 
      [family] => 50 
      [horror] => 50 
      [romantic] => 50 
      [sci-fi] => 50 
      [thriller] => 50 
     ) 

    [film_types] => Array 
     (
      [blockbuster] => 0 
      [independent] => 0 
     ) 

    [film_eras] => Array 
     (
      [1920s_1940s] => 0 
      [1950s_1960s] => 0 
      [1970s_1980s] => 0 
      [1990s_2000s] => 0 
      [post_2010] => 0 
      [pre_1920s] => 0 
     ) 

    [last_updated] => 2011-10-12 21:21:28 
)

लेकिन जब मैं के माध्यम से उपयोगकर्ता मेटा तालिका में यह डेटा अद्यतन करने के लिए जाना meta_value, $ prev_value)

डेटा डीबी में ठीक से डाल दिया जाता है, लेकिन जब मैं डेटा को वापस कॉल करता हूं और स्क्रीन पर नई सरणी मुद्रित करता हूं, तो इसमें सरणी के अंदर [0] की नेस्टेड सरणी कुंजी होती है, इस तरह :

 
Array 
(
    [0] => Array 
     (
      [film_genres] => Array 
       (
        [action] => 50 
        [comedy] => 50 
        [crime] => 50 
        [documentary] => 50 
        [drama] => 50 
        [family] => 50 
        [horror] => 50 
        [romantic] => 50 
        [sci-fi] => 50 
        [thriller] => 50 
       ) 

      [film_types] => Array 
       (
        [blockbuster] => 0 
        [independent] => 0 
       ) 

      [film_eras] => Array 
       (
        [1920s_1940s] => 0 
        [1950s_1960s] => 0 
        [1970s_1980s] => 0 
        [1990s_2000s] => 0 
        [post_2010] => 0 
        [pre_1920s] => 0 
       ) 

      [last_updated] => 2011-10-12 21:21:28 
     ) 

) 

मैं इसे अपनी पहली सरणी की तरह सरणी को स्टोर करने के लिए कैसे प्राप्त कर सकता हूं? मैं WP आदेश के माध्यम से मेटा मान सरणी खींच कर रहा हूँ:

$wp_user_film_prefs_arr = get_user_meta($wp_user_id, $wp_user_film_prefs_key_label, false);

वहाँ कुछ मैं गलत कर रहा हूँ है? अग्रिम में धन्यवाद!!!

उत्तर

17

आप falsetrue करने से पिछले पैरामीटर निर्धारित करने की आवश्यकता: तीसरे पैरामीटर $single है

$wp_user_film_prefs_arr = get_user_meta($wp_user_id, $wp_user_film_prefs_key_label, true); 

कि:

(बुलियन) (वैकल्पिक) यदि मेटा डेटा क्षेत्र का सच वापसी मान, अगर झूठी एक सरणी लौटती है।

डिफ़ॉल्ट: झूठी

कि तुम्हारी आँखों में विपरीत उत्पादक ध्वनि सकता है, लेकिन मेटा डेटा क्षेत्र से अधिक मान हो सकते हैं। आपके मामले में आपको इसकी आवश्यकता नहीं है, लेकिन एकल मान। एकल मान आपकी सरणी है।

रूप में अच्छी तरह देखें: get user metaCodex

+0

हाँ, आप सही थे! मैंने शुरुआत में झूठी सोच का चयन किया कि यह फिर सरणी को वापस कर देगा, जैसा कि मेरे मूल्यों की सरणी में है, लेकिन यह मेटा डेटा फ़ील्ड की एक सरणी को फिर से चालू कर रहा है। मान को वापस करने के लिए सही में बदल दिया गया और फिर उसे "शायद_unserialize ($ wp_user_film_prefs_val)" के साथ एक सरणी के रूप में संग्रहीत किया गया; " धन्यवाद दोस्त! – chuuke

+0

बढ़िया! धन्यवाद! – Magico

+0

एक सरणी के बारे में सोचने के लिए अपने सिर को एक मूल्य के रूप में प्राप्त करना मुश्किल है – henrywright

0

क्या आप serialize() पर एक स्ट्र के रूप में विचार करते हैं और इस स्ट्र को अपने डीबी में स्टोर करते हैं, और unserialize() डीबी से प्राप्त करने के बाद सरणी में स्ट्रिंग करते हैं?

+0

वर्डप्रेस पर्दे के पीछे आप के लिए क्रमबद्धता करता है। @ हाखरा का सही जवाब था। – James

संबंधित मुद्दे