PHP foreach 循环键值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1834703/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 04:00:10  来源:igfitidea点击:

PHP foreach loop key value

phpforeach

提问by matthewb

I am running this DB call to get me multi-dimensional array I am trying to get the keys of each but when I try it comes up blank or as array.

我正在运行这个数据库调用来获取我的多维数组我试图获取每个的键但是当我尝试它时它出现空白或作为数组。

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

here is my php that loops through:

这是我的 php 循环:

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

<?php endforeach ?>

Also when I run a test which just spits out the array this is the result, What I am trying to render is [Philadelphia]

此外,当我运行一个只是吐出数组的测试时,这就是结果,我试图渲染的是[Philadelphia]

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

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

回答by Pekka

You can access your array keys like so:

您可以像这样访问数组键:

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

回答by Phill Pafford

As Pekka stated above

正如 Pekka 上面所说

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

Also you might want to try a recursive function

你也可能想尝试一个递归函数

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 />";
        }
    }
}

回答by Melih Y?ld?z'

You can also use array_keys(). Newbie friendly:

您也可以使用array_keys(). 新手友好:

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

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

回答by kumar

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

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

        array_push($additionalService,$value);

    }
}