【问题标题】:Create associative array from Foreach Loop PHP从 Foreach 循环 PHP 创建关联数组
【发布时间】:2010-09-30 18:57:01
【问题描述】:

我有这个 foreach 循环:

foreach($aMbs as $aMemb){
    $ignoreArray = array(1,3);
    if (!in_array($aMemb['ID'],$ignoreArray)){ 
        $aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);
    }
}

这会打印出正确的字段,但它们是数组中的数组。我需要 foreach 循环来输出一个像这样的简单数组:

$aMemberships = array('1' => 'Standard', '2' => 'Silver');

我做错了什么?

【问题讨论】:

    标签: php foreach


    【解决方案1】:

    您需要更改您的 $aMemberships 分配

    $aMemberships[] = $aMemb['Name']; 
    

    如果你想要一个数组

    $aMemberships[$aMemb['ID']] = $aMemb['Name'];
    

    如果你想要一张地图。

    你正在做的是将一个数组附加到一个数组中。

    【讨论】:

    • 每个答案都是一样的。很难选择一个来投票。 +1 用于解释他正在将一个数组附加到一个数组。
    • 如果查询返回 id 和 name 如何循环,以便 id 和 name 可以集中在一个 name
    【解决方案2】:

    foreach 语句中的关联数组:

    foreach($nodeids as $field => $value) {
    
      $field_data[$field]=$value;
    
    }
    

    输出:

    Array(
    $field => $value,
    $field => $value
    ...
    );
    

    在 CodeIgniter 中的插入:

    $res=$this->db->insert($bundle_table,$field_data);
    

    【讨论】:

      【解决方案3】:

      代替

      $aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);
      

      试试

      $aMemberships[$aMemb['ID']] = $aMemb['Name'];
      

      【讨论】:

        【解决方案4】:

        您现有的代码使用增量键并使用数组作为对应值。 要使$aMemberships 成为键为$aMemb['ID'] 且值为$aMemb['Name'] 的关联数组,您需要更改

            $aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);
        

        在foreach循环中:

            $aMemberships[$aMemb['ID']] = $aMemb['Name']);
        

        【讨论】:

        • 如果查询返回 id 和 name 怎么循环,这样 id 和 name 可以合二为一 <td value = "id">name</td>
        【解决方案5】:

        它会打印一个数组数组,因为您在这一行中这样做

        $aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);
        

        你在一个变量之后的 [] 表示要在数组的新行中分配值,并且你正在将另一个数组插入到该行中

        所以你可以使用其他人已经给出的例子,或者你可以使用这种方法:

        int array_push ( array &$array , mixed $var [, mixed $... ] )
        

        这是一个你可以在 api 中找到的例子

        <?php
        $stack = array(0=>"orange",1=>"banana");
        array_push($stack, 2=>"apple",3=>"raspberry");
        print_r($stack);
        ?>
        
        //prints
        Array
        (
            [0] => orange
            [1] => banana
            [2] => apple
            [3] => raspberry
        )
        

        http://php.net/manual/en/function.array-push.php

        【讨论】:

          【解决方案6】:

          您在 foreach 循环中获得一个关联数组的 key and value,并使用键值对创建一个关联。

          $aMemberships=array();//define array
          foreach($aMbs as $key=>$value){
              $ignoreArray = array(1,3);
              if (!in_array($key,$ignoreArray)){ 
                  $aMemberships[$key] = $value;
              }
          }
          

          它会给你一个预期的输出:

          array('1' => 'Standard', '2' => 'Silver');
          

          【讨论】:

          • 如果查询返回id和name怎么循环,这样id和name可以合二为一&lt;td value = "id"&gt;name&lt;/td&gt;
          • 为此你应该 $key 值是数字。
          • id 来自数据库。
          • 在数组中赋值前先检查条件。
          • 兄弟,您的问题不清楚,请更新并提及您的问题。你想做什么?
          猜你喜欢
          • 2016-09-09
          • 2012-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-20
          • 2020-05-01
          • 2023-03-26
          • 1970-01-01
          相关资源
          最近更新 更多