Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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");
share|improve this question
    
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. –  Dave Jan 6 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]; –  kuroi neko Jan 6 at 20:12

1 Answer 1

up vote 2 down vote accepted

Try this :

while ($open_positions_array = mysqli_fetch_row($open_positions_result))
{
   $array2[] = $open_positions_array['position'];
}
share|improve this answer
    
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! –  Cthulhuite Jan 7 at 2:53

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.