मैं एक $input
सरणी है कहो, जो कुछ इस तरह होती है:एक सरणी के भी क्रमांकित तत्वों को रखते हुए?
array
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string 'd' (length=1)
4 => string 'e' (length=1)
5 => string 'f' (length=1)
6 => string 'g' (length=1)
7 => string 'h' (length=1)
8 => string 'i' (length=1)
9 => string 'j' (length=1)
मैं एक $output
सरणी प्राप्त करना चाहते हैं, कि यह शामिल होगा:
array
0 => string 'a' (length=1)
1 => string 'c' (length=1)
2 => string 'e' (length=1)
3 => string 'g' (length=1)
4 => string 'i' (length=1)
$output
सरणी आधा मान हैं कि $input
में थे; जिनके पास इनपुट में चाबियाँ भी थीं; पहले एक दूसरे से एक नहीं है, रखा जाता है, तीसरे में से एक है, और इसलिए एक ...
(नोट: कुंजी संरक्षित नहीं कर रहे हैं, केवल मान महत्वपूर्ण हैं)
मैं कैसे कर सकता है वो करें ? सरणी के दो मानों पर केवल एक को रखते हुए?
मैं पहले से ही कुछ विचारों की कोशिश की है, और पहले से ही एक जोड़े को अलग अलग समाधान है:
पहले विचार: इनपुट सरणी पर पुनरावृति, और आउटपुट सरणी के लिए दिलचस्प मूल्यों कॉपी:
$input = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',);
$output = array();
$nbr = count($input);
for ($i = 0 ; $i < $nbr ; $i += 2) {
$output[] = $input[$i];
}
var_dump(array_values($output));
दूसरा विचार: सरणी पर पुनरावृति, और unset
मैं नहीं है क्या चाहते हैं रखने के लिए:
$input = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',);
$output = $input;
$nbr = count($input);
for ($i = 1 ; $i < $nbr ; $i += 2) {
unset($output[$i]);
}
var_dump(array_values($output));
तीसरा विचार:array_flip
, range
, array_diff_key
के combinaison उपयोग करते हैं, ...:
$input = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',);
$output = array();
$keys_to_exclude = array_flip(range(1, count($input)-1, 2));
$output = array_diff_key($input, $keys_to_exclude);
var_dump(array_values($output));
चौथा विचार: एक ही बात के बारे में, लेकिन array_intersect_key
साथ:
$input = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',);
$output = array();
$keys_to_include = array_flip(range(0, count($input)-1, 2));
$output = array_intersect_key($input, $keys_to_include);
var_dump(array_values($output));
कोई अन्य विचार? यहां तक कि विशेष रूप से अगर यह थोड़ी हैकी या कुछ भी लगता है?
मेरा लक्ष्य सबसे कुशल और न ही सरल वाक्यविन्यास प्राप्त करना है; यह सिर्फ मजेदार है और क्योंकि मैं उत्सुक हूं, वास्तव में ^^
यदि शीर्षक सही शब्दों का उपयोग करने के लिए सही शब्दों का उपयोग नहीं कर रहा है, तो बताने में संकोच न करें; या यह:-)
मैं एक छोटे से अनुरोध किया के रूप में शीर्षक और कलन विधि का वर्णन संपादित। निजी तौर पर मैं पहले विचार का उपयोग करता हूं - यह सरल और स्पष्ट रूप से स्पष्ट है कि आप क्या कर रहे हैं। –
संपादन के लिए धन्यवाद :-) ठीक है, वास्तव में, "मैं अपने आप से लूपिंग के दौरान ऐसा कैसे कर सकता हूं" एक सवाल है जो काम के कुछ दिनों पहले पॉप-अप था; एक सहयोगी और मैंने इसके बारे में सोचा ... और हमने अंततः "के लिए" समाधान (पहला मैंने दिया) का उपयोग किया: कम मजेदार, लेकिन समझने में आसान जब किसी को अपना कोड बनाए रखना होगा - और यह सबसे अधिक है हमारे काम में महत्वपूर्ण बात; लेकिन, यह अभी भी एक दिलचस्प सवाल था, और मैंने सोचा कि मुझे अपने विचारों के साथ अच्छी तरह से तैयार प्रश्न के लिए ^^ –
+1 यहां कुछ मजाकिया/रोचक प्रस्ताव मिल सकते हैं – PatrikAkerstrand