2012-05-14 31 views
30

thể trùng lặp:
Remove item from array if it exists in a 'disallowed words' arrayHủy bỏ các yếu tố của một mảng nếu nó được tìm thấy trong một

Tôi có một chuỗi động mà khách hàng sẽ gửi và tôi muốn tạo thẻ dấu phẩy phân cách từ nó:

$subject = "Warmly little in before cousin as sussex and an entire set Blessing it ladyship."; 
print_r($tags = explode(" ", strtolower($subject))); 

Và chưa, tôi muốn xóa một nhóm từ cụ thể (chẳng hạn như nghệ thuật xác định icles), nhưng tôi muốn xóa khóa và giá trị của từ đó nếu nó là trong mảng phát nổ:

$definite_articles = array('the','this','then','there','from','for','to','as','and','or','is','was','be','can','could','would','isn\'t','wasn\'t', 'until','should','give','has','have','are','some','it','in','if','so','of','on','at','an','who','what','when','where','why','we','been','maybe','further'); 

Nếu một trong những từ này trong mảng $definite_article là trong mảng $tags xóa các khóa và giá trị của từ đó và mảng mới sẽ có những từ này được lấy ra. Tôi sẽ có mảng này được sử dụng bởi array_rand để có một nhóm ngẫu nhiên các từ được chọn ra khỏi nó. Tôi đã thử nhiều thứ để đạt được kết quả của mình, nhưng không có gì cho đến nay. Ai đó có thể giúp tôi tìm cách giải quyết vấn đề này không?

+0

Tra cứu mảng_diff() trong hướng dẫn – GordonM

+1

CLUE: array_diff() –

+0

tra cứu tại array-diff-key() và liên kết tham chiếu [http://php.net/manual/en/function.array-diff -key.php] – manish1706

Trả lời

46

Bạn đang tìm kiếm array_diff:

$subject = "Warmly little in before cousin as sussex..."; 
$tags = explode(" ", strtolower($subject)); 

$definite_articles = array('the','this','then','there','from','for','to','as'); 

$tags = array_diff($tags, $definite_articles); 
print_r($tags); 

See it in action.

27

Âm thanh như một công việc dễ dàng cho array_diff().

array array_diff (array $array1 , array $array2 [, array $... ])

So sánh array1 chống array2 và trả phần chênh lệch.

Điều này về cơ bản có nghĩa là nó sẽ trả về array1 sau khi nó bị tước tất cả các giá trị tồn tại trong array2.

+0

'array_diff()' sẽ giữ lại các khóa mảng ban đầu [của 'mảng1'], đó là những gì làm cho câu lệnh này đúng. Bạn có thể hoặc có thể không muốn điều này, nhưng nó chỉ là một cái gì đó để được nhận thức. – Jason

+0

array_diff() sẽ giữ lại các mảng mảng ban đầu [của array1] - chỉ cần bọc nó trong mảng_values ​​- điều này sẽ đặt lại các khóa mảng mới: Ví dụ: $ new_array = array_values ​​(array_diff ($ array1, $ array2)); – realmag777

Các vấn đề liên quan