मैं एक सरणी के अंदर एक फ़ंक्शन को मान के रूप में कॉल करने का प्रयास कर रहा हूं लेकिन फ़ंक्शन काम नहीं कर रहा है इसके बजाय सरणी के बाहर प्रतिबिंबित किया गया है।
मेरा कोड उदाहरण यहां दिया गया है:
function plm() {
global $InfoPing;
foreach($InfoPing['description']['extra'] as $plm) {
echo $plm['text'];
}
}
$json = array(
'status' => 'Online',
'motd' => array(
'ingame' => plm()
),
'host' => array(
'host' => $host,
'port' => $port
),
'players' => array(
'max' => $InfoPing['players']['max'],
'online' => $InfoPing['players']['online']
),
'version' => array(
'version' => $version[1],
'protocol' => $InfoPing['version']['protocol']
),
'queryinfo' => array(
'agreement' => 'Ping',
'processed' => $Timer
)
);
echo json_encode($json, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
किसी भी मदद की अत्यधिक सराहना की जाती है।
2 जवाब
जैसा कि Blake Ottinger अपने जवाब में बताते हैं, आपको return
डेटा की जरूरत है, न कि echo
. लेकिन जब आप return
, आप फ़ंक्शन से बाहर निकलते हैं और केवल पहला मान लौटाया जाएगा। यदि आप $InfoPing['description']['extra']
के सभी तत्वों से text
चाहते हैं, तो एक सरणी बनाएं और उसे वापस करें:
function plm() {
global $InfoPing;
foreach($InfoPing['description']['extra'] as $plm) {
$result[] = $plm['text'];
}
return $result;
}
हालांकि, फ़ंक्शन के बजाय आप सभी text
को एक अंतर्निर्मित फ़ंक्शन के साथ निकाल सकते हैं और इसे सरणी में असाइन कर सकते हैं:
'ingame' => array_column($InfoPing['description']['extra'], 'text');
आपकी समस्या plm()
फ़ंक्शन में echo
के आपके उपयोग के कारण है। क्योंकि यह लौटने के बजाय गूँजता है, यह इसे शेष JSON से पहले ब्राउज़र को भेजता है, और फिर NULL
देता है, जिससे सरणी में NULL
मान सम्मिलित होता है। इसके बजाय इसे return
में बदलें।
function plm() {
global $InfoPing;
foreach($InfoPing['description']['extra'] as $plm) {
return $plm['text'];
}
}
यह आपके मुद्दों को ठीक करना चाहिए।
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।