2010-12-26 10 views
14

किसी सरणी में विशिष्ट मान या मान जोड़ने का सबसे अच्छा तरीका क्या है? किंडा की व्याख्या करने के लिए मुश्किल है, लेकिन यह मदद करनी चाहिए:PHP: सरणी मानों के लिए उपसर्ग स्ट्रिंग जोड़ना

<?php 
$myarray = array("test", "test2", "test3"); 
$myarray = array_addstuff($myarray, " "); 
var_dump($myarray); 
?> 

कौन सा आउटपुट:

array(3) { 
    [0]=> 
    string(5) " test" 
    [1]=> 
    string(6) " test2" 
    [2]=> 
    string(6) " test3" 
} 

तुम इतनी इस तरह कर सकता है:

function array_addstuff($a, $i) { 
    foreach ($a as &$e) 
     $e = $i . $e; 
    return $a; 
} 

लेकिन अगर वहाँ एक है मैं सोच रहा हूँ तेज़ तरीका, या यदि यह फ़ंक्शन अंतर्निहित है।

+0

मेरे उत्तर पर एक नज़र डालें, कोई तेज़ तरीका नहीं है, वास्तव में एक अंतर्निहित कार्य है, लेकिन इस कार्यान्वयन के लिए धीमा साबित हुआ है –

उत्तर

30

मामले में है कि आप एक PHP संस्करण> = 5.3 का उपयोग कर रहे:

$array = array('a', 'b', 'c'); 
array_walk($array, function(&$value, $key) { $value .= 'd'; }); 
+0

बहुत बहुत धन्यवाद! – skeggse

+5

array_walk() बूलियन को पीछे छोड़ देता है इसलिए यह कोड अमान्य है – shfx

+0

आप सही, संपादित, मेरे खराब हैं। – Andre

3

array_walk का उपयोग करें। PHP 5.3 में आप उस कॉलबैक को परिभाषित करने के लिए अनाम का उपयोग कर सकते हैं। चूंकि आप वास्तविक सरणी को संशोधित करना चाहते हैं, इसलिए आपको कॉलबैक के पहले पैरामीटर को पास-बाय-रेफरेंस के रूप में निर्दिष्ट करना होगा।

13

उपयोग array_map()

$array = array('a', 'b', 'c'); 
$array = array_map(function($value) { return ' '.$value; }, $array); 
+0

क्या यह एक पूरी नई सरणी बनाने का ओवरहेड नहीं होगा? – skeggse

2

कोड नीचे प्रत्येक तत्व मूल्य के लिए एक उपसर्ग के रूप में "prefix_" जोड़ना होगा:

$myarray = array("test", "test2", "test3");  
$prefixed_array = preg_filter('/^/', 'prefix_', $myarray); 

आउटपुट होगा:

Array ([0] => prefix_test [1] => prefix_test2 [2] => prefix_test3) 
+2

कृपया कुछ स्पष्टीकरण जोड़ें। चूंकि आपने वैरिएबल नाम और अक्षर का उपयोग किया है जिनके पास प्रश्न के साथ कोई पत्राचार नहीं है, कम से कम आप ऐसा कर सकते हैं। – trincot

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