PHP создает пары ключ => значение в foreach - PullRequest
17 голосов
/ 10 мая 2011

Я хочу создать пары ключ-значение в массиве внутри 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 ]

43 голосов
/ 10 мая 2011

Как то так?

foreach ($Offer as $key => $value) { 
  $offerArray[$key] = $value[4];
}
4 голосов
/ 04 января 2014

Создайте пары ключ-значение в командной строке 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
3 голосов
/ 10 мая 2011

Создайте пары ключ-значение в пределах foreach, как это:

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

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

    return $offerArray;
}
1 голос
/ 27 ноября 2014

В PHP> = 5.3 это можно сделать так:

$offerArray = array_map(function($value) {
    return $value[4];
}, $offer);
0 голосов
/ 10 мая 2011
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;
}
...