2009-10-20 40 views
51

Tiêu đề cho biết. Cụ thể nếu tôi cóCách so sánh 2 chuỗi theo thứ tự abc

$array1['name'] = 'zoo'; 
$array2['name'] = 'fox'; 

Làm thế nào tôi có thể xác định rằng theo thứ tự abc $array2 's tên nên đến ở trên $array1' s?

+0

Bạn có thể tìm thấy [ 's ($ array1 [ 'name']) -> compareTo ($ array2 ['name']) '] (https://github.com/deli ght-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php # L495) hoặc ['s ($ array1 ['name']) -> compareToIgnoreCase ($ array2 ['name'])'] (https: //github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L514) hữu ích, như được tìm thấy trong [thư viện độc lập này] (https://github.com/delight-im/PHP -Str) – caw

Trả lời

76

Sử dụng strcmp. Nếu đối số đầu tiên của strcmp nhỏ hơn từ điển thứ hai, thì giá trị trả về sẽ là số âm. Nếu cả hai đều bằng nhau, thì nó sẽ trả về 0. Và nếu giá trị đầu tiên bằng lexicograpically lớn hơn số thứ hai thì một số dương sẽ được trả về.

nb. Bạn có thể muốn sử dụng strcasecmp (string1,string2), bỏ qua trường hợp ...

1

sort

EDIT chỉ giá trị thực hiện từ các mảng khác nhau, có thể array_merge thats đầu tiên nhưng không chắc chắn những gì bạn muốn

8

Bạn có thể so sánh hai xâu với strcmp:

Returns < 0 nếu str1 nhỏ hơn str2; > 0 nếu str1 lớn hơn str2 và 0 nếu chúng bằng nhau.

1

Tôi thường sử dụng natsort (Natural Sort), vì tôi thường chỉ muốn bảo toàn mảng để sử dụng sau này.

Ví dụ:

natsort($unsorted_array); 

var_dump($usorted_array); // will now be sorted. 
7

Tôi là một chút muộn (sau đó một lần nữa tôi không phải là một lập trình viên nhưng trong năm 2009 :-) Không ai nói ra điều đó, nhưng bạn chỉ có thể sử dụng các toán tử mà bạn sử dụng trên số là tốt.

< > <= >= == != và nhiều hơn nữa

Ví dụ:

'a' > 'b' lợi nhuận false

'a' < 'b' lợi nhuận true

http://php.net/manual/en/language.operators.comparison.php

+1

Con người, đây chắc chắn là câu trả lời tốt nhất cho chủ đề này và nó không có một upvote duy nhất! Nếu bạn chỉ cần so sánh hai chuỗi để chỉ đơn giản là tìm thấy một trong đó đến đầu tiên theo thứ tự chữ cái, nó chắc chắn là giải pháp nhẹ hơn, thông minh nhất. Tuy nhiên, thật ngu ngốc nó gần như đau. –

+1

@MarcosBuarque: Tôi đánh giá cao nó. Tôi đã chỉ 8 năm quá muộn với câu trả lời của tôi :-) – JMRC

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