0

I have 2 arrays, one with key, another with numeric keys, how can i copy they key, replacing the numeric keys in the exact order?

Array with numeric key

Array
(
    [0] => ABCDEFG
    [1] => This is my description
    [2] => 12.00
    [3] => 30.00
    [4] => My supplier
    [5] => My brand
    [6] => Shoes
    [7] => 

)

Array 2

Array
(
    [productcode] => Product Code
    [productitemdesc] => Description
    [retailsalesprice] => Selling Price
    [currentcost] => Unit Cost
    [supplier] => Supplier
    [productbrand] => Brand
    [productcategory] => Category
    [productgroup] => Group
)

I would want something like this

Array
    (
        [productcode] => ABCDEFG
        [productitemdesc] => This is my description
        [retailsalesprice] => 12.00
        [currentcost] => 30.00
        [supplier] => My Supplier
        [productbrand] => My Brand
        [productcategory] => Shoes
        [productgroup] =>
    )

Is there any existing functions available for php? Tried array_fill_keys but doesn't seem to be what i want.

0

5 Answers 5

6

You can use the function array_combine() to combine the keys from the second array (for the following example called $array_keys) with the values from the first array (called $array_values):

Example:

$combined = array_combine(array_keys($array_keys), $array_values);
print_r($combined);

This prints out the array exactly like you described.

Sign up to request clarification or add additional context in comments.

Comments

0

array_combine way is a lot better but you can use this function as well. This will allow you to modify the values if you want.

function custom_combine($numeric_array, $keyed_array)
{   
    $temp = array();
    $i=0;
    foreach($keyed_array as $key=>$val)
    {
        if(isset($numeric_array[$i]))       
            $temp[$key] = $numeric_array[$i];
        else
            $temp[$key] ='';
        $i++;           
    }   
    return($temp);
}

Comments

0

The other answers are definitely more efficient, but in case you'd like to learn how to manually loop through arrays, something like this should work:

<?php

// The original array
$arr1 = array(
    0 => 'ABCDEFG',
    1 => 'This is my description',
    2 => '12.00',
    3 => '30.00',
    4 => 'My supplier',
    5 => 'My brand',
    6 => 'Shoes',
    7 => '',
);

// The second array
$arr2 = array(
    'productcode' => 'Product Code',
    'productitemdesc' => 'Description',
    'retailsalesprice' => 'Selling Price',
    'currentcost' => 'Unit Cost',
    'supplier' => 'Supplier',
    'productbrand' => 'Brand',
    'productcategory' => 'Category',
    'productgroup' => 'Group',
);

// Pre-define the new array to avoid errors
$arr_new = array();

// Manually create a value to increment during our foreach loop
$increment = 0;

// Loop through each value in $arr2
foreach ($arr2 as $key2 => $value2) {
  // If the key is set in $arr1, assign the value from $arr1 and the key from $arr2
  // to the new array
  if (isset($arr1[$increment])) {
    $arr_new[$key2] = $arr1[$increment];
  }
  // Increment the value regardless of whether it was found in $arr1 or not
  $increment++;
}

// Remove this if you want... It just displays the values found in $arr_new
print_r($arr_new);

Comments

0

i tested it and work :

<?php
$a=array(
0 => "ABCDEFG",
1 => "This is my description",
2 => "12.00",
3 => '30.00',
4 => 'My supplier',
5 => 'My brand',
6 => 'Shoes',
7 => '',

)
;
$b=array
(
'productcode' => 'Product Code',
'productitemdesc' => 'Description',
'retailsalesprice' => 'Selling Price',
'currentcost' => 'Unit Cost',
'supplier' => 'Supplier',
'productbrand' => 'Brand',
'productcategory' => 'Category',
'productgroup' => 'Group',
);
 $j=0;
 foreach ($b as $i => $value) {
    $b[$i]=$a[$j];
    $j++;
}
 var_dump($b);

?>

Comments

-1

you can use array_combine()

$array3=array_combine($array2,$array1);
   print_r($array3);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.