2016-05-10 1 views
0

с использованием array_diff для фильтрации моего массива и убедитесь, что если слово находится в фильтре, оно не будет включено в эхо. Прямо сейчас, если я заменил array2 на «test1, test4», результат будет «test2, test3», который является правильным, но вместо этого, если я заменил array2 на «test2, test4», который должен выводить «test1, test3», я вместо этого получаю вывода «test1, test2, test3», поэтому он не фильтрует его. Я знаю, что это, наверное, очень простое решение, я просто не замечаю этого. Я отправлю код ниже.Array diff работает только с первым словом в массиве

<?php 
$array1 = "test1, test2, test3"; 
$array2 = "test2, test4"; 

$myArray = explode(',', $array1); 
$myArray2 = explode(',', $array2); 
$unique=array_diff($myArray, $myArray2); 
echo implode(',', $unique); 
?> 
+4

Вы должны взорваться() на разделителями пространства, так '«» ', либо все, кроме первого есть пространство в качестве первого символа. – AbraCadaver

ответ

1

Вы должны использовать trim с array_map, как показано ниже код.

$array1 = "test1, test2, test3"; 
$array2 = "test2, test4"; 

$myArray = array_map('trim', explode(',', $array1)); 
$myArray2 = array_map('trim', explode(',', $array2)); 

$unique=array_diff($myArray, $myArray2); 
echo implode(',', $unique); 
+2

Почему бы просто не использовать пространство во взрыве()? – AbraCadaver

+0

Да, вы правы мистером @AbraCadaver, который также можно использовать, но возможно, что пространство может быть до и/или после значения –

1

Использование explode,SPACE с

$myArray = explode(', ', $array1); 
$myArray2 = explode(', ', $array2);