PHP foreach लूप कुंजी मूल्य


136

मैं इस DB कॉल को चलाने के लिए मुझे बहुआयामी सरणी प्राप्त करने के लिए कोशिश कर रहा हूं मैं प्रत्येक की कुंजी प्राप्त करने की कोशिश कर रहा हूं, लेकिन जब मैं कोशिश करता हूं तो यह रिक्त या सरणी के रूप में आता है।

$root_array = array();
$sites = $this->sites($member_id);
foreach ($sites as $site){
    $records = $this->db->select('p.name as place_name, p.id as place_id,p.active as place_status')
                ->from('places p')
                ->join('members_permissions pm','pm.sites_id = p.sites_id and pm.members_id ='.$member_id)
                ->where('p.active', 0)
                ->get();

    $places = $records->result_array();
    $places['name'] = $site['name'];
    foreach($places as $place){
       $root_array[$site['name']][] = $place;
    }

}
return $root_array;

यहाँ मेरा php है कि के माध्यम से loops:

<?php foreach($places as $site): ?>
    <h5><?=key($site)?></h5>
        <?php foreach($site as $place): ?>
            <h6><?=$place['place_name']?></h6>
        <?php endforeach?>

<?php endforeach ?>

इसके अलावा जब मैं एक परीक्षण चलाता हूं जो सिर्फ सरणी से निकलता है तो यह परिणाम है, जो मैं प्रस्तुत करने की कोशिश कर रहा हूं वह है [फिलाडेल्फिया]

[Philadelphia] => Array
        (
            [0] => Array
                (
                    [place_name] => XYX
                    [place_id] => 103200
                    [place_status] => 0
                )

            [1] => Array
                (
                [place_name] => YYYY
                [place_id] => 232323
                [place_status] => 0
            )

जवाबों:


382

आप अपनी सरणी कुंजियों को इस तरह एक्सेस कर सकते हैं:

foreach ($array as $key => $value)

यह विधि केवल 'एरे' को लौटाती है
मैथ्यू बीबीक्यू

क्या, अगर तुम $ कुंजी गूंज? नाह। यदि आप इसे उस सरणी पर चलाते हैं जो कि Philadelphiaएक कुंजी है। क्या आप कुछ कोड दिखा सकते हैं?
पेका डे

यह काम करता है, मेरे mysql स्टेटमेंट में एक छोटी सी समस्या भी थी, लेकिन मैंने इसे आपके समाधान के साथ काम किया, धन्यवाद।
मैथ्यू

32

जैसा कि पक्के ने ऊपर कहा है

foreach ($array as $key => $value)

इसके अलावा आप एक पुनरावर्ती समारोह की कोशिश करना चाहते हो सकता है

displayRecursiveResults($site);

function displayRecursiveResults($arrayObject) {
    foreach($arrayObject as $key=>$data) {
        if(is_array($data)) {
            displayRecursiveResults($data);
        } elseif(is_object($data)) {
            displayRecursiveResults($data);
        } else {
            echo "Key: ".$key." Data: ".$data."<br />";
        }
    }
}

8

आप भी इस्तेमाल कर सकते हैं array_keys()। नौसिखिया के अनुकूल:

$keys      = array_keys($arrayToWalk);
$arraySize = count($arrayToWalk);

for( $i=0; $i < $arraySize; $i++ ) {
    echo '<option value="' . $keys[$i] . '">' . $arrayToWalk[$keys[$i]] . '</option>';
}

6
foreach($shipmentarr as $index=>$val){    
    $additionalService = array();

    foreach($additionalService[$index] as $key => $value) {

        array_push($additionalService,$value);

    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.