Я пытаюсь использовать array_diff для сравнения списка значений, вытащенных из таблицы, с одним, который я установил вручную, и он не работает, даже не закрывается. Это похоже на то, что он не распознает массив, который я строю из запроса, и просто выводит массив1 без изменений. Любая идея, где я ошибаюсь? Я попытался поместить их в другую сторону, я пробовал разные способы построения array2 в запросе, и ничего не помогает.Использование PHP array_diff, и он не является корректным.
$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);
У меня есть вывод в другом месте, и сейчас он просто выводит массив1 без изменений. Если я включу это, вы получите правильную разницу.
$array2 = array("CO", "XO", "OPS", "NAV", "CTO", "TAC", "CMO", "SCI", "CEO");
Посмотрите на содержимое $ array2 с помощью var_dump ($ array2). Это будет многомерный массив, который вы не хотите сравнивать с $ array1. – Dave
Как вы строите $ array2, он никогда не будет плоским списком значений. это будет массив массивов, содержащий ваши значения DB. Лучше использовать $ array2 [] = $ open_positions_array [$ whatever_indice_you_need]; –