2012-04-19 12 views
6

संभव डुप्लिकेट आपत्ति उठाने:
Casing an Array with Numeric Keys as an Objectपीएचपी कास्टिंग सरणी

मैं विरोध करने वालों से एक कास्टिंग बनाया है और मैं उलझन में हूँ:

$arr = range(1,3); 
$obj = (object) $arr; 
var_dump($obj) 

object(stdClass)#2 (5) { 
    [0]=> 
    int(1) 
    [1]=> 
    int(2) 
    [2]=> 
    int(3) 
} 

सवाल यह है कि : इस मामले में ऑब्जेक्ट विशेषताओं तक कैसे पहुंचे? $obj->0 वाक्यविन्यास त्रुटि का कारण बनता है।

foreach($obj as $key => $value) 
    var_dump("$key => $value"); 

लेकिन निश्चित रूप से इस आधार समस्या का समाधान नहीं होगा:

+0

मुमकिन है '$ obj उपयोग कर सकते हैं -> {0}' रूप में अच्छी तरह विफल रहता है? – halfer

उत्तर

4

आप इन ऑब्जेक्ट गुणों तक नहीं पहुंच सकते हैं जब तक कि आप किसी सरणी पर वापस नहीं आते। अवधि। अगर आपको किसी कारण से ऐसा करना है, तो सरणी कुंजी को किसी और चीज़ पर सेट करें।

2

इस मामले में केवल एक ही चीज़ मुझे लगता है कि कर सकते हैं एक foreach इस तरह उपयोग करने वाली प्रॉपर्टी का उपयोग करने की है।

+0

ठीक है, यह मेरी समस्या नहीं है - मैं बस जानना चाहता था। फिर भी मैंने खुद को यह विश्वास दिलाया कि PHP अजीब है। नकल के लिए खेद है! – biera

1

ऐसा लगता है कि ArrayObject वर्ग गुण

$a = new ArrayObject($obj); 
echo $a[0]; 
संबंधित मुद्दे