phparraysfilterresultsetarray-difference

Remove values from a flat array if found as a column value in a multi-row query result set


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");

Solution

  • Try this :

    while ($open_positions_array = mysqli_fetch_row($open_positions_result))
    {
       $array2[] = $open_positions_array['position'];
    }