मेरे पास यह सरणी है:

$datas = array(
    array(
        'id' => '1',
        'country' => 'Canada',
        'cities' => array(
            array(
                'city'  => 'Montreal',
                'lang'   => 'french'
            ),
            array(
                'city'  => 'Ottawa',
                'lang'   => 'english'
            )
        )
    )
);

प्रश्न 1:

जब मेरे पास id है तो मुझे country नाम कैसे मिलेगा?
मैंने कोशिश की: $datas['id'][1] => 'country'

प्रश्न 2:

जब मेरे पास id है तो मैं cities में कैसे लूप कर सकता हूं?
मैंने कोशिश की:

foreach ($datas as $data => $info) {
    foreach ($info['cities'] as $item) {
        echo '<li>'.$item['city'].'</li>';
    }
}

बहुत - बहुत धन्यवाद।

1
user4440254 9 जिंदा 2018, 18:19

2 जवाब

सबसे बढ़िया उत्तर

आपके पास उस सरणी की आईडी है जिसका आप विश्लेषण करना चाहते हैं, लेकिन आपकी सरणी को मानचित्र के रूप में संरचित किया गया है, जिसका अर्थ है कि बाहरी सरणी में कोई कुंजी नहीं है। इसलिए आप जिस वस्तु की तलाश कर रहे हैं उसे खोजने के लिए आपको पहले सरणी को पुनरावृत्त करना होगा।

जबकि पहला तरीका उस वस्तु की खोज करना होगा जिसमें वह आईडी है जिसकी आप तलाश कर रहे हैं, मेरा सुझाव है कि आप अपने सरणियों को उनकी आईडी से मैप करें। ऐसा करने के लिए, आप दो PHP सरणी फ़ंक्शंस का उपयोग कर सकते हैं: array_column और array_combine

array_column एक सरणी में प्रत्येक तत्व के एक विशिष्ट क्षेत्र को निकाल सकता है। चूंकि आपके पास कई देश ऑब्जेक्ट हैं, इसलिए हम बाद में इसे एक कुंजी के रूप में उपयोग करने के लिए इससे आईडी निकालना चाहते हैं।

array_combine एक नई सहयोगी सरणी बनाने के लिए एक ही आकार के दो सरणियाँ लेता है। फिर पहली सरणी के मानों को कुंजियों के रूप में उपयोग किया जाएगा, जबकि दूसरे सरणी के मानों को मानों के रूप में उपयोग किया जाएगा।

$mappedCountries = array_combine(array_column($datas, 'id'), $datas);

यह मानते हुए कि कुंजी 1 चर $key = 1; में संग्रहीत है, आप बाद में देश का नाम प्राप्त करने के लिए $mappedCountries[$key]['country'] और शहरों को प्राप्त करने के लिए $mappedCountries[$key]['cities'] का उपयोग कर सकते हैं, जिस पर आप फिर पुनरावृति कर सकते हैं।

2
Philipp Maurer 9 जिंदा 2018, 18:35

यदि $datas में कई सरणियाँ हो सकती हैं और आप आईडी (या किसी अन्य कुंजी) द्वारा एक खोजना चाहते हैं, तो आप कुछ इस तरह कर सकते हैं:

function search($datas, $key, $value) {
    foreach($datas as $data) {
    if ($data[$key] === $value) {
        return $data;   
    }
}

तो अगर आप यह पता लगाना चाहते हैं कि id = 1 . कहाँ है $result = search($datas, 'id', '1'); और फिर आप देश echo $result['country'] या जो कुछ भी आपको चाहिए उसे प्राप्त कर सकते हैं।

1
ArtOsi 9 जिंदा 2018, 18:37