असल में अगर आप चाहते हैं एक सरणी के लिए डाली और आप इसे में डाल के बारे में चिंता करने की ज़रूरत नहीं है, इस सवाल का जवाब
$var = (is_object($var)) ? array($var) : (array) $var;
आप नीचे दिए गए कोड
के साथ इस परीक्षण कर सकते हैं है
function toArray($var) {
return (is_object($var)) ? array($var) : (array) $var;
}
$object = new stdClass;
$resource = fopen('php://stdout', 'w');
$closure = function() {};
$tests = array(
array(toArray(true), array(true), 'boolean true'),
array(toArray(false), array(false), 'boolean false'),
array(toArray(null), array(), 'null'),
array(toArray(1), array(1), 'positive integer'),
array(toArray(0), array(0), 'zero integer'),
array(toArray(-1), array(-1), 'negative integer'),
array(toArray(1.5), array(1.5), 'positive float'),
array(toArray(0.0), array(0.0), 'zero float'),
array(toArray(-1.5), array(-1.5), 'negative float'),
array(toArray(''), array(''), 'empty string'),
array(toArray('foo'), array('foo'), 'string'),
array(toArray(array()), array(), 'array'),
array(toArray($object), array($object), 'object'),
array(toArray($resource), array($resource), 'resource'),
array(toArray($closure), array($closure), 'closure'),
);
foreach ($tests as $test) {
ob_start();
var_dump($test[0]);
$a = ob_get_clean();
ob_start();
var_dump($test[1]);
$b = ob_get_clean();
assert($a === $b, "{$test[2]} is not the same");
}
यह परिणाम php अप्रत्याशित व्यवहार में परिणाम देता है। सही तरीका सरणी है ($ arr) – Ulterior
उत्तर सही है। @Ulterior द्वारा टिप्पणी नहीं है। उदाहरण: $ arr = null; var_dump ((सरणी) $ arr, सरणी ($ arr)); रिटर्न: सरणी (0) {} (सही), फिर सरणी (1) {[0] => न्यूल} (गलत) इसके अलावा, cbroughton के सही उत्तर के संबंध में, इस तरह के कलाकारों की आवश्यकता होती है जब चर एक foreach() में प्रयोग किया जाना चाहिए: यदि चर एक सरणी (या पुनरावृत्त) नहीं है, तो एक PHP चेतावनी होगी। – FGM
FWIW: मुझे लगता है कि टाइपकास्ट करना महत्वपूर्ण है यदि आपके पास कभी भी एक चर है तो यह एक फ़ंक्शन के बाद उत्परिवर्तन के अधीन है जो एक सरणी लेता है उदा। 'foreach' या' implode' अन्यथा आप अवांछित त्रुटियों और चेतावनियों में भाग लेंगे। – GFargo