मुझे यह देखने के लिए बड़े सरणी जांचनी चाहिए कि क्या वे 100% संख्यात्मक मान से भरे हुए हैं। मेरे दिमाग में आने का एकमात्र तरीका foreach है और फिर प्रत्येक मूल्य के लिए is_numeric है, लेकिन क्या यह सबसे तेज़ तरीका है?जांचने का सबसे तेज़ तरीका क्या है यदि किसी ऐरे में सभी मान संख्यात्मक हैं?
उत्तर
अपने सरणी संभालने एक आयामी और पूर्णांकों का ऊपर सिर्फ बनाया है:
return ctype_digit(implode('',$array));
को मेरे वोट को पूर्ववत करना पड़ा, 'झूठा' और 'न्यूल' मान, जो 'is_numeric()' के लिए झूठी वापसी करते हैं, को 'ctype_digit()' से बचने के लिए खाली तारों के रूप में निहित किया गया है। – BoltClock
@ बोल्टक्लॉक: ओपी आश्वासन देता है कि सरणी "100% संख्यात्मक मानों से भरा" – stillstanding
मुझे लगता है कि समय पर इंपोड ऑपरेशन महंगा है। – rsk82
तेज तरीका सिर्फ ग्रहण करने के लिए वे सभी अंकों के हैं और अपने आपरेशन के साथ जारी हो सकता है। यदि आपका ऑपरेशन बाद में विफल रहता है, तो आप जानते हैं कि कुछ संख्या नहीं है। लेकिन अगर वे वास्तव में अंक हैं ... आप ओ (0) से ज्यादा तेज नहीं हो सकते हैं!
लेकिन कमजोर/ऑटोकास्टिंग के कारण कुछ गैर-संख्यात्मक मान फिसल जाएंगे। धारणा सुरक्षित नहीं है। – Umbrella
इसे उत्तर के रूप में स्वीकार क्यों किया गया? यह कुछ भी जांच नहीं करता है ... –
इस छोटे से समारोह के लिए मुझे
function IsNumericarr($arr){
if(!is_array($arr)){
return false;
}
else{
foreach($arr as $ar){
if(!is_numeric($ar)){
return false;
exit;
}
}
return true;
}
}
लूप ठीक काम करता है
array_map("is_numeric", array(1,2,"3","hello"))
Array ([0] => 1 [1] => 1 [2] => 1 [3] =>)
if(array_reduce($array, function($c, $v){return $c & (int)is_numeric($v);}, 1))
यह उत्तर स्वचालित रूप से इसकी लंबाई और सामग्री के कारण कम गुणवत्ता वाले के रूप में चिह्नित किया गया था। एक स्पष्टीकरण इस जवाब को एक स्टैक ओवरफ़्लो उत्तर की तरह बनने में मदद करेगा। – Popnoodles
फ़िल्टर सरणी की जरूरत है is_numeric का उपयोग कर। यदि परिणाम का आकार मूल जैसा ही है, तो सभी आइटम संख्यात्मक हैं:
$array = array(1, '2', '45');
if (count($array) === count(array_filter($array, 'is_numeric'))) {
// all numeric
}
* इस समस्या का कोई भी * समाधान सरणी मानों पर लूप होगा। चाहे आपको कोड या फ़ंक्शन में ऐसा करने की आवश्यकता हो, यह आपके लिए एक और सवाल है, लेकिन दोनों मामलों में एक लूप है। तो मुझे लगता है कि आप जो भी करते हैं उसके बावजूद प्रदर्शन काफी समान होना चाहिए। – Joey
सरणी में आने से पहले मानों को मान्य करने के बारे में क्या? –
यह इतना आसान नहीं है क्योंकि मान आते हैं और सरणी से यादृच्छिक तरीकों से जाते हैं और उनमें से कुछ शून्य या गलत हो सकते हैं या फिर, और फिर मुझे उनके साथ गणना करनी चाहिए, और इन गणनाओं के नतीजे शून्य हो सकते हैं सरणी में कुछ डेटा संख्यात्मक नहीं है। – rsk82