1

I currently have two arrays:

$array1 = array("Option 1", "Option 2", "Option 3", "Option 4");
$array2 = array("Option 2", "Option 3", "Option 8");

I want to see which values in $array2 can be found in $array1. If there is a value in $array2 which can be found in $array1 (eg. Option 2), I want to change the value of that item to something different (eg. Confirmed). In addition, I want to preserve the order of the items in $array2.

3 Answers 3

3
foreach($array2 as &$value) {
    if(in_array($value,$array1)) {
        $value = 'Confirmed';
    }
}
Sign up to request clarification or add additional context in comments.

Comments

1

You can use the array_intersect.

A clearer example of the key preservation of this function:

<?php

$array1 = array(2, 4, 6, 8, 10, 12);
$array2 = array(1, 2, 3, 4, 5, 6);

var_dump(array_intersect($array1, $array2));
var_dump(array_intersect($array2, $array1));

?>

result:

array(3) {
  [0]=> int(2)
  [1]=> int(4)
  [2]=> int(6)
}

array(3) {
  [1]=> int(2)
  [3]=> int(4)
  [5]=> int(6)
}

This makes it important to remember which way round you passed the arrays to the function.

You can see more at: http://php.net/manual/en/function.array-intersect.php

Comments

1

You can use array_map function, mapping all the values to see which correspond in $array1 and return the message you want, or return the regular values:

$array2 = array_map(function($a) use ($array1) {
    if (in_array($a, $array1)){
        return "confirmed";
    }
    return $a;
}, $array2);

print_r($array2);

Output:

Array
(
    [0] => confirmed
    [1] => confirmed
    [2] => Option 8
)

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.