PHP在foreach循环中创建键值对

18

我想在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
5个回答

51

像这样的吗?

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

4

在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循环块。 - pensebien

4

在foreach循环内创建键值对,像这样:

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

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

    return $offerArray;
}

1
在 PHP >= 5.3 中,可以这样做:
$offerArray = array_map(function($value) {
    return $value[4];
}, $offer);

-1
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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接