【问题标题】:PHP foreach loop key valuePHP foreach 循环键值
【发布时间】:2010-12-22 12:36:33
【问题描述】:

我正在运行这个 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:

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

<?php endforeach ?>

另外,当我运行一个只吐出数组的测试时,结果就是这样, 我要渲染的是 [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
            )

【问题讨论】:

    标签: php foreach


    【解决方案1】:

    你可以像这样访问你的数组键:

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

    【讨论】:

    • 这个方法只返回'array'
    • 如果你回显 $key 怎么办?不。如果您在 Philadelphia 是其键的数组上运行它,则不会。你能显示一些代码吗?
    • 这行得通,我的 mysql 语句也有一个小问题,但我得到了它与你的解决方案一起工作,谢谢。
    【解决方案2】:

    如上所述,佩卡

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 拥有$keys 后,代码更简单更高效:foreach ($keys as $key) ... $key ... $arrayToWalk[$key] ...$keys 可能只是数组中的几个键时,这很有用 - 否则foreach ($arrayToWalk as $key =&gt; $value) ... 更易于使用并且稍微快一点。
      【解决方案4】:
      foreach($shipmentarr as $index=>$val){    
          $additionalService = array();
      
          foreach($additionalService[$index] as $key => $value) {
      
              array_push($additionalService,$value);
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-14
        • 2016-09-26
        • 2012-07-19
        • 1970-01-01
        相关资源
        最近更新 更多