2010-05-20 8 views
6

मैं array_replace_recursive के लिए एक समाधान की जरूरत है, क्योंकि मेरे php-संस्करण पर्याप्त नहीं है। मैं इस कोड का उपयोग करना चाहता हूं:php: array_replace_recursive विकल्प

$_GET = array_replace_recursive($_GET, array("__amp__"=>"&")); 

आसान, है ना?

उत्तर

5

array_replace_recursive के लिए PHP डॉक्स पृष्ठ पर, किसी को यह के स्थान पर उपयोग करने के लिए निम्नलिखित स्रोत कोड पोस्ट:

<?php 
if (!function_exists('array_replace_recursive')) 
{ 
    function array_replace_recursive($array, $array1) 
    { 
    function recurse($array, $array1) 
    { 
     foreach ($array1 as $key => $value) 
     { 
     // create new key in $array, if it is empty or not an array 
     if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key]))) 
     { 
      $array[$key] = array(); 
     } 

     // overwrite the value in the base array 
     if (is_array($value)) 
     { 
      $value = recurse($array[$key], $value); 
     } 
     $array[$key] = $value; 
     } 
     return $array; 
    } 

    // handle the arguments, merge one by one 
    $args = func_get_args(); 
    $array = $args[0]; 
    if (!is_array($array)) 
    { 
     return $array; 
    } 
    for ($i = 1; $i < count($args); $i++) 
    { 
     if (is_array($args[$i])) 
     { 
     $array = recurse($array, $args[$i]); 
     } 
    } 
    return $array; 
    } 
} 
?> 
+1

समारोह एक बार से अधिक उपयोग करते हैं, मैं मिलता है: गंभीर त्रुटि: recurse() – mikewasmike

1

@Justin द्वारा उपरोक्त कोड ठीक है, 2 बातों के लिए बचाने के लिए:

  1. फ़ंक्शन निष्पादन की शुरुआत में फ़ंक्शन आसानी से उपलब्ध नहीं है क्योंकि यह() में लपेटा गया है। PHP docu सबसे महत्वपूर्ण बात कहते हैं

    When a function is defined in a conditional manner such as the two examples shown. Its definition must be processed prior to being called.

  2. ; फ़ंक्शन को दो बार कॉल करने से घातक त्रुटि होती है। PHP docu

    All functions and classes in PHP have the global scope - they can be called outside a function even if they were defined inside and vice versa.

तो मैं सिर्फ बाहर array_replace_recursive समारोह recurse समारोह में ले जाया गया है और यह अच्छी तरह से काम कहते हैं। मैं भी if() हालत निकाल दिया है और भविष्य के डर से array_replace_recursive_b4php53 को इसका नाम बदलकर upgradings

+0

redeclare नहीं कर सकता यह जस्टिन जवाब पर एक टिप्पणी किया जाना चाहिए (क्योंकि अंतरिक्ष एक टिप्पणी में सीमित है, आप एक लिंक में पूरा संदेश पोस्ट कर सकते हैं)। इस के रूप में चिह्नित एक जवाब नहीं है। – mickmackusa

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