18

I want to create a key-value pairs in an array within a foreach. Here is what I have so far:

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

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

        array_push($offerArray,$keyval);
    }

    return $offerArray;
}   

If I declare the array within the foreach, it will overwrites it on each iteration, but defining it outside the foreach doesn't work either and causes triplets:

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

How do I make it so I only get key-value pairs like this?

key => value
key => value
Eric Leschinski
  • 146,994
  • 96
  • 417
  • 335
BobFlemming
  • 2,040
  • 11
  • 43
  • 59

5 Answers5

51

Something like this?

foreach ($Offer as $key => $value) { 
  $offerArray[$key] = $value[4];
}
Emil Vikström
  • 90,431
  • 16
  • 141
  • 175
4

Create key value pairs on the phpsh commandline like this:

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

Get the count of key value pairs:

php> echo count($offerarray);
2

Get the keys as an array:

php> echo implode(array_keys($offerarray));
foopyramid
Eric Leschinski
  • 146,994
  • 96
  • 417
  • 335
  • This does not answer the question. I think the OP was asking about iterating through a foreach loop block. – pensebien Aug 05 '20 at 17:50
4

Create key-value pairs within a foreach like this:

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

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

    return $offerArray;
}
Eric Leschinski
  • 146,994
  • 96
  • 417
  • 335
Karl Laurentius Roos
  • 4,360
  • 1
  • 33
  • 42
1

In PHP >= 5.3 it can be done like this:

$offerArray = array_map(function($value) {
    return $value[4];
}, $offer);
Matěj Koubík
  • 1,087
  • 1
  • 9
  • 25
-1
function createOfferUrlArray($Offer) {
    $offerArray = array();
    foreach ($Offer as $key => $value) { 
        $offerArray[$key] = $value[4];
    }
    return $offerArray;
}

or

function createOfferUrlArray($offer) {
    foreach ( $offer as &$value ) {
        $value = $value[4];
    }
    unset($value);
    return $offer;
}
binaryLV
  • 9,002
  • 2
  • 40
  • 42