इसके बजाय छोरों का उपयोग करने का
, आप हमेशा json_encode()
साथ स्ट्रिंग के लिए समतल कर सकता है, एक स्ट्रिंग प्रतिस्थापन, तो json_decode()
वापस एक सरणी के लिए करते हैं:
function replaceKey($array, $old, $new)
{
//flatten the array into a JSON string
$str = json_encode($array);
// do a simple string replace.
// variables are wrapped in quotes to ensure only exact match replacements
// colon after the closing quote will ensure only keys are targeted
$str = str_replace('"'.$old.'":','"'.$new.'":',$str);
// restore JSON string to array
return json_decode($str, TRUE);
}
अब यह पूर्व-मौजूदा कुंजी (स्ट्रिंग तुलना चेक जोड़ने के लिए पर्याप्त आसान) के साथ संघर्ष की जांच नहीं करता है, और यह बड़े पैमाने पर सरणी में एकल प्रतिस्थापन के लिए सबसे अच्छा समाधान नहीं हो सकता है .. लेकिन प्रतिस्थापन के लिए एक स्ट्रिंग में सरणी सपाट के बारे में अच्छा हिस्सा है कि यह प्रभावी रूप से प्रतिस्थापन पुनरावर्ती बनाता है के बाद से किसी भी गहराई में मैचों सभी एक पास में बदल दिया जाता है है:
$arr = array(
array(
'name' => 'Steve'
,'city' => 'Los Angeles'
,'state' => 'CA'
,'country' => 'USA'
,'mother' => array(
'name' => 'Jessica'
,'city' => 'San Diego'
,'state' => 'CA'
,'country' => 'USA'
)
)
,array(
'name' => 'Sara'
,'city' => 'Seattle'
,'state' => 'WA'
,'country' => 'USA'
,'father' => array(
'name' => 'Eric'
,'city' => 'Atlanta'
,'state' => 'GA'
,'country' => 'USA'
,'mother' => array(
'name' => 'Sharon'
,'city' => 'Portland'
,'state' => 'OR'
,'country' => 'USA'
)
)
)
);
$replaced = replaceKey($arr,'city','town');
print_r($replaced);
आउटपुट
Array
(
[0] => Array
(
[name] => Steve
[town] => Los Angeles
[state] => CA
[country] => USA
[mother] => Array
(
[name] => Jessica
[town] => San Diego
[state] => CA
[country] => USA
)
)
[1] => Array
(
[name] => Sara
[town] => Seattle
[state] => WA
[country] => USA
[father] => Array
(
[name] => Eric
[town] => Atlanta
[state] => GA
[country] => USA
[mother] => Array
(
[name] => Sharon
[town] => Portland
[state] => OR
[country] => USA
)
)
)
)
काफी दिलचस्प दृष्टिकोण, में मेरी राय संदर्भ के रूप में सरणी पारित करना बेहतर होगा। – Nazariy
@Nazariy: php मूल पैरामीटर को कॉपी नहीं करेगा जब तक कि इसे संशोधित नहीं किया जाता है (जिसे कॉपी-ऑन-राइट, गाय कहा जाता है)। इस दृष्टिकोण से मुझे इस विशेष मामले में संदर्भों का उपयोग करने के किसी भी फायदे नहीं दिखते हैं – zerkms
धन्यवाद zerkms, एक सुरुचिपूर्ण दृष्टिकोण। –