【问题标题】:PHP create key => value pairs within a foreachPHP 在 foreach 中创建键 => 值对
【发布时间】:2011-08-22 13:05:07
【问题描述】:

我想在 foreach 中的数组中创建一个键值对。这是我目前所拥有的:

function createOfferUrlArray($Offer) {
    $offerArray = array();

    foreach ($Offer as $key => $value) { 
        $keyval = array($key => $value[4] );

        array_push($offerArray,$keyval);
    }

    return $offerArray;
}   

如果我在 foreach 中声明该数组,它将在每次迭代时覆盖它,但在 foreach 之外定义它也不起作用并导致三元组:

array[0] => key => value
array[1] => key => value 

我怎样才能得到这样的键值对?

key => value
key => value

【问题讨论】:

    标签: php arrays foreach key-value


    【解决方案1】:

    这样的?

    foreach ($Offer as $key => $value) { 
      $offerArray[$key] = $value[4];
    }
    

    【讨论】:

      【解决方案2】:

      像这样在 foreach 中创建键值对:

      function createOfferUrlArray($Offer) {
          $offerArray = array();
      
          foreach ($Offer as $key => $value) {
              $offerArray[$key] = $value[4];
          }
      
          return $offerArray;
      }
      

      【讨论】:

        【解决方案3】:

        像这样在 phpsh 命令行上创建键值对:

        php> $keyvalues = array();
        php> $keyvalues['foo'] = "bar";
        php> $keyvalues['pyramid'] = "power";
        php> print_r($keyvalues);
        Array
        (
            [foo] => bar
            [pyramid] => power
        )
        

        获取键值对的计数:

        php> echo count($offerarray);
        2
        

        以数组的形式获取键:

        php> echo implode(array_keys($offerarray));
        foopyramid
        

        【讨论】:

        • 这没有回答问题。我认为 OP 是在询问有关迭代 foreach 循环块的问题。
        【解决方案4】:

        在 PHP >= 5.3 中可以这样做:

        $offerArray = array_map(function($value) {
            return $value[4];
        }, $offer);
        

        【讨论】:

          【解决方案5】:
          function createOfferUrlArray($Offer) {
              $offerArray = array();
              foreach ($Offer as $key => $value) { 
                  $offerArray[$key] = $value[4];
              }
              return $offerArray;
          }
          

          function createOfferUrlArray($offer) {
              foreach ( $offer as &$value ) {
                  $value = $value[4];
              }
              unset($value);
              return $offer;
          }
          

          【讨论】:

            猜你喜欢
            • 2021-08-20
            • 2013-06-10
            • 2015-05-09
            • 2010-12-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多