2011-06-15 10 views
5

अगर मैं निम्नलिखित है,केकपीएचपी - सत्र में सरणी को कैसे धक्का देना है?

$this->Session->write('ScoreCardCriteria', 'test'); 

और मदों की एक सरणी के रूप में ScoreCardCriteria के लिए एक और आइटम जोड़ना चाहते हैं, मैं कैसे इतना करना होगा? जैसे

$_SESSION['ScoreCardCriteria'][] = 'test'; 

कुछ

नियमित पीएचपी साथ

, यह हो सकता है कि मैं इस के साथ आया था:

$new_array = array_merge((array)$this->Session->read('ScoreCardCriteria'), array('test')); 
    $this->Session->write('ScoreCardCriteria', $new_array); 

लेकिन मैं अच्छा लगेगा अगर वहाँ था एक और अधिक "केक" तरीके से करना यह।

+0

जिस विधि के साथ मैं आया था वह काफी काम नहीं करता था। यह सिर्फ सभी मूल्यों को ओवरराइट करता है ... –

उत्तर

12

आप ऐसा कर सकता है:

$this->Session->write('ScoreCardCriteria', array('test')); 

और फिर:

$data = $this->Session->read('ScoreCardCriteria'); 
$data[] = 'test'; 
$this->Session->write('ScoreCardCriteria', $data); 

हालांकि, काफी ईमानदार होना, CakePHP $ _SESSION वस्तु आंतरिक रूप से उपयोग करता है और बस डिफ़ॉल्ट सत्र संचालकों ओवरराइड करता है। एकमात्र चीज ->write एक डॉट नोटेड सेट पथ पार्स है (जो foo.bar.x जैसा दिखता है) जो आप नहीं कर रहे हैं। और यदि आप विशेष मान देख रहे हैं तो डीबग जानकारी गूंजें। यदि आप सीधे $_SESSION संशोधित करते हैं तो इसे चोट नहीं पहुँचना चाहिए।

+0

कोई भी जानता है कि इसे क्यों वोट दिया गया था? यह लगभग 7 मिनट बाद पोस्ट किए गए दूसरे उत्तर के समान ही है और मतदान नहीं किया गया है। –

+0

यकीन नहीं है ... यह वही है जो मैंने किया और महान काम किया। धन्यवाद –

+0

आपका स्वागत है। चूंकि मैंने कई लोगों को शिकायत की है कि वैसे भी इसे वोट दें :)। मैं सिर्फ उत्सुक था कि मैंने -1 के लायक होने के लिए क्या गलत किया –

2

आपको सत्र डेटा पढ़ने की आवश्यकता है और फिर इसे जोड़ने के लिए अपने डेटा के साथ विलय करना होगा। आपको यह भी जांचना चाहिए कि ऐसा करने से पहले सत्र डेटा मौजूद है या नहीं:

if ($this->Session->check('ScoreCardCriteria')) { 
    $this->Session->write('ScoreCardCriteria', am(
     $this->Session->read('ScoreCardCriteria'), 
     array('test') 
    )); 
} else { 
    $this->Session->write('ScoreCardCriteria', array('test')); 
} 

आशा है कि मदद करता है।

संबंधित मुद्दे