0

I'm trying to use array_diff to compare a list of values pulled from a table with one I set manually and it's not working, not even close. It's like it doesn't recognise the array I build from the query, and just outputs array1 unchanged. Any idea where i'm going wrong? I've tried putting them the other way around, i've tried different ways of building array2 in the query, and nothing seems to help.

$open_positions_query = "SELECT position FROM ship_positions WHERE ship_id = '$ship_id'";
$open_positions_result = mysqli_query($mysqli, $open_positions_query);
while ($open_positions_array = mysqli_fetch_row($open_positions_result))
{
   $array2[] = array($open_positions_array);
}

$array1 = array("CO", "XO", "OPS", "NAV", "CTO", "TAC", "CMO", "MED", "CSO", "SCI", "CEO", "ENG", "CIV");   

$arrayresult = array_diff($array1, $array2);

I've got it outputting elsewhere, and right now it just outputs array1 unchanged. If I put this in though, it outputs the correct difference.

$array2 = array("CO", "XO", "OPS", "NAV", "CTO", "TAC", "CMO", "SCI", "CEO");
2
  • Take a look at the contents of $array2 using var_dump($array2). It will be a multi-dimensional array, which is not what you want for comparing to $array1. Commented Jan 6, 2014 at 20:08
  • The way you construct $array2, it will never be a flat list of values. it will be an array of arrays containing your DB values. Better use $array2[] = $open_positions_array[$whatever_indice_you_need]; Commented Jan 6, 2014 at 20:12

1 Answer 1

2

Try this :

while ($open_positions_array = mysqli_fetch_row($open_positions_result))
{
   $array2[] = $open_positions_array['position'];
}
Sign up to request clarification or add additional context in comments.

1 Comment

This worked fantastically. I had to changed it to "mysqli_fetch_array" on the while line, otherwise it pulled Null values, but after that it worked a treat. You are all magnificent, thank you!

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.