2014-01-06 3 views
0

Я пытаюсь использовать 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"); 
+0

Посмотрите на содержимое $ array2 с помощью var_dump ($ array2). Это будет многомерный массив, который вы не хотите сравнивать с $ array1. – Dave

+0

Как вы строите $ array2, он никогда не будет плоским списком значений. это будет массив массивов, содержащий ваши значения DB. Лучше использовать $ array2 [] = $ open_positions_array [$ whatever_indice_you_need]; –

ответ

2

Попробуйте это:

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

Это сработало фантастически. Мне пришлось изменить его на «mysqli_fetch_array» на строке while, иначе он вытащил значения Null, но после этого он обработал. Вы все великолепны, спасибо! – Cthulhuite

Смежные вопросы