मैं एक सरणी के अंदर एक फ़ंक्शन को मान के रूप में कॉल करने का प्रयास कर रहा हूं लेकिन फ़ंक्शन काम नहीं कर रहा है इसके बजाय सरणी के बाहर प्रतिबिंबित किया गया है।

मेरा कोड उदाहरण यहां दिया गया है:

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);

यहां परिणाम हैं किसी भी मदद की अत्यधिक सराहना की जाती है।

php
0
Bogdan Galan 26 जिंदा 2021, 23:02

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');
1
AbraCadaver 27 जिंदा 2021, 00:09

आपकी समस्या plm() फ़ंक्शन में echo के आपके उपयोग के कारण है। क्योंकि यह लौटने के बजाय गूँजता है, यह इसे शेष JSON से पहले ब्राउज़र को भेजता है, और फिर NULL देता है, जिससे सरणी में NULL मान सम्मिलित होता है। इसके बजाय इसे return में बदलें।

function plm() {
    global $InfoPing;
    foreach($InfoPing['description']['extra'] as $plm) {
        return $plm['text'];
    }
}

यह आपके मुद्दों को ठीक करना चाहिए।

1
AbraCadaver 27 जिंदा 2021, 00:06