कैसे मैं PHP में लोअरकेस में सभी मानों को परिवर्तित कर सकता हूं?
कुछ पसंद है array_change_key_case
?
कैसे मैं PHP में लोअरकेस में सभी मानों को परिवर्तित कर सकता हूं?
कुछ पसंद है array_change_key_case
?
जवाबों:
उपयोग array_map()
:
$yourArray = array_map('strtolower', $yourArray);
मामले में आपको नेस्टेड सरणी ( याह्या उद्दीन द्वारा ) कम करने की आवश्यकता है:
$yourArray = array_map('nestedLowercase', $yourArray);
function nestedLowercase($value) {
if (is_array($value)) {
return array_map('nestedLowercase', $value);
}
return strtolower($value);
}
mb_strtolower
$yourArray = array_map('mb_strtolower', $yourArray);
मैंने अभी जाँच की और यह सिरिलिक के लिए काम किया
पूर्णता के लिए: आप भी उपयोग कर सकते हैं array_walk
:
array_walk($yourArray, function(&$value)
{
$value = strtolower($value);
});
PHP डॉक्स से:
यदि कॉलबैक को सरणी के वास्तविक मानों के साथ काम करने की आवश्यकता है, तो कॉलबैक के पहले पैरामीटर को संदर्भ के रूप में निर्दिष्ट करें। फिर, उन तत्वों में कोई भी परिवर्तन मूल सरणी में ही किया जाएगा।
या सीधे संदर्भों का उपयोग करके foreach
लूप के माध्यम से :
foreach($yourArray as &$value)
$value = strtolower($value);
ध्यान दें कि ये दो विधियाँ सरणी को "जगह" में बदल देती हैं, जबकि array_map
सरणी की एक प्रतिलिपि बनाता है और लौटाता है, जो बहुत बड़े सरणियों के मामले में वांछनीय नहीं हो सकता है।
array_walk_recursive()
। mb_strtolower()
इसलिए भी कि दुनिया बहुभाषी है।
यदि आप नेस्टेड सरणी में सभी मान कम करना चाहते हैं , तो निम्न कोड का उपयोग करें:
function nestedLowercase($value) {
if (is_array($value)) {
return array_map('nestedLowercase', $value);
}
return strtolower($value);
}
इसलिए:
[ 'A', 'B', ['C-1', 'C-2'], 'D']
लौटूंगा:
[ 'a', 'b', ['c-1', 'c-2'], 'd']
array_change_value_case
जारी रखें
function array_change_value_case($array, $case = CASE_LOWER){
if ( ! is_array($array)) return false;
foreach ($array as $key => &$value){
if (is_array($value))
call_user_func_array(__function__, array (&$value, $case ) ) ;
else
$array[$key] = ($case == CASE_UPPER )
? strtoupper($array[$key])
: strtolower($array[$key]);
}
return $array;
}
$arrays = array ( 1 => 'ONE', 2=> 'TWO', 3 => 'THREE',
'FOUR' => array ('a' => 'Ahmed', 'b' => 'basem',
'c' => 'Continue'),
5=> 'FIVE',
array('AbCdeF'));
$change_case = array_change_value_case($arrays, CASE_UPPER);
echo "<pre>";
print_r($change_case);
Array ( [1] => one [2] => two [3] => three [FOUR] => Array ( [a] => ahmed [b] => basem [c] => continue ) [5] => five [6] => Array ( [0] => abcdef ) )
AIO समाधान / पुनरावर्ती / यूनिकोड | UTF-8 | Multibyte समर्थित!
/**
* Change array values case recursively (supports utf8/multibyte)
* @param array $array The array
* @param int $case Case to transform (\CASE_LOWER | \CASE_UPPER)
* @return array Final array
*/
function changeValuesCase ( array $array, $case = \CASE_LOWER ) : array {
if ( !\is_array ($array) ) {
return [];
}
/** @var integer $theCase */
$theCase = ($case === \CASE_LOWER)
? \MB_CASE_LOWER
: \MB_CASE_UPPER;
foreach ( $array as $key => $value ) {
$array[$key] = \is_array ($value)
? changeValuesCase ($value, $case)
: \mb_convert_case($array[$key], $theCase, 'UTF-8');
}
return $array;
}
उदाहरण:
$food = [
'meat' => ['chicken', 'fish'],
'vegetables' => [
'leafy' => ['collard greens', 'kale', 'chard', 'spinach', 'lettuce'],
'root' => ['radish', 'turnip', 'potato', 'beet'],
'other' => ['brocolli', 'green beans', 'corn', 'tomatoes'],
],
'grains' => ['wheat', 'rice', 'oats'],
];
$newArray = changeValuesCase ($food, \CASE_UPPER);
उत्पादन
[
'meat' => [
0 => 'CHICKEN'
1 => 'FISH'
]
'vegetables' => [
'leafy' => [
0 => 'COLLARD GREENS'
1 => 'KALE'
2 => 'CHARD'
3 => 'SPINACH'
4 => 'LETTUCE'
]
'root' => [
0 => 'RADISH'
1 => 'TURNIP'
2 => 'POTATO'
3 => 'BEET'
]
'other' => [
0 => 'BROCOLLI'
1 => 'GREEN BEANS'
2 => 'CORN'
3 => 'TOMATOES'
]
]
'grains' => [
0 => 'WHEAT'
1 => 'RICE'
2 => 'OATS'
]
]
आप यह नहीं कहते हैं कि क्या आपका सरणी बहुआयामी है। यदि यह है, तो array_map अकेले काम नहीं करेगा। आपको कॉलबैक विधि की आवश्यकता है। बहुआयामी सरणियों के लिए, array_change_key_case आज़माएं ।
// You can pass array_change_key_case a multi-dimensional array,
// or call a method that returns one
$my_array = array_change_key_case(aMethodThatReturnsMultiDimArray(), CASE_UPPER);
`$ रंग = सरणी ('ए' => 'ब्लू', 'बी' => 'ग्रीन', 'सी' => 'रेड');
$ strtolower = array_map ('strtolower', $ Color);
$ strtoupper = array_map ('strtoupper', $ Color);
print_r ($ strtolower); print_r ($ strtoupper); `
तुम भी के संयोजन का उपयोग कर सकते हैं array_flip()
और array_change_key_case()
। इस पोस्ट को देखें
array_flip()
यदि सरणी में डुप्लिकेट किए गए मान हैं, तो कॉल करने के बाद सरणी डेटा खो जाता है ।