2012-06-29 24 views
11

Cách thực tế nhất để khắc phục sự nhầm lẫn của đống cỏ trong PHP là gì?Khắc phục sự nhầm lẫn của đống cỏ trong PHP

Ở đây $ kim là đối số đầu tiên

bool in_array (mixed $needle , array $haystack [, bool $strict = FALSE ]) 

Ở đây $ kim là đối số thứ hai

string strstr (string $haystack , mixed $needle [, bool $before_needle = false ]) 
+6

https://gist.github.com/1672543 – Gordon

+0

@Gordon, tôi trao đổi danh sách chức năng này với các mảng nội bộ từ 'get_defined_functions()', và thấy rằng danh sách này nhớ các chức năng chuỗi mb và iconv những người. Nhưng nó vẫn gọn gàng, -? – TerryE

+0

Parahat, đây chỉ là một trong nhiều khía cạnh mà nhấn mạnh thực tế là PHP phát triển hơn là được sinh ra từ một thiết kế lại sạch sẽ. Quy ước đặt tên nhiều hàm là một quy ước khác. – TerryE

Trả lời

1

Tôi không nghĩ đó là quan trọng. Nó giống với Linux bash. Ví dụ tar sử dụng các tệp đối số lưu trữ nhưng ln sử dụng các đối số target linkname. Nhưng ví dụ của tôi không phải là ngôn ngữ lập trình vì vậy đây là một giải thích khác: Điều đầu tiên trên thế giới đếm hoặc đánh số là gì? Đối với những gì bạn cần, nó luôn là 2 đối số. Điều này cũng đúng với ví dụ của tôi với tar và ln.

8

nó có thể có ý nghĩa nếu bạn nghĩ về điều này như là đại diện trước khi sửa chữa của một hoạt động trong sửa chữa.

is "bat" in array ("cat", "rat", "bat", "fat") 
is $needle in_array $haystack 
in_array($needle, $haystack) 


does "supercalifragistic" string contain string "percal" 
does $haystack strstr $needle 
strstr($haystack, $needle) 
+1

Nhưng chuỗi là một mảng các ký tự. ** ** –

+2

Nhưng tại sao câu "làm $ haystack strstr $ kim' hợp lý hơn thì' là $ kim strstr $ haystack'? – Nanne

+0

@Nanne nhiều hơn về việc ghi nhớ so với logic. câu lệnh 'is x in y' có 'in', và do đó tham số đầu tiên in_array sẽ là x và thứ hai sẽ là y. trong câu có 'không', y là trước x. do đó hàm sẽ nhận y đầu tiên và sau đó x. –