10/10/2018, 10:47

Những câu hỏi ngu về php

Như các bác đã biết, trong php không cần khai báo kiểu dữ liệu cho biến.Giờ em có một cái hàm muốn đầu vào là một kiểu dữ liệu cụ thể( int chẳng hạn), như trong java chúng ta có thể làm:
public void methodName(int $x)
{
//do something
}
trong php có thể làm được như vậy ko ạ? mong các bác chỉ giáo
s.code viết 12:56 ngày 10/10/2018
chỉ cần 5 giây thử là biết ngay ấy mà.

Giờ bắt tôi quay lại viết = java thì ức chế chết. Cái gì cũng phải khai báo. Không mềm dẻo.
vnntech.com viết 13:01 ngày 10/10/2018
Tham khảo tại đây nè bạn

http://www.w3schools.com/PHP/php_functions.asp
nguoi.tap.code viết 12:55 ngày 10/10/2018
à, em thì đã thử rồi và không thấy được. ý em là, nếu có một yêu cầu đầu vào là một kiểu dữ liệu cụ thể, liệu có cách nào làm được với php ko? ( kiểu như lách luật ý các bác ). hay là không thể làm được vậy?
Shellingfox viết 12:57 ngày 10/10/2018
Bạn có thể định nghĩa kiểu dữ liệu đầu vào cho PHP như là:
PHP Code:
function abc(StringInterface $test) {
  
// $test bắt buộc phải là một implement của class StringInterface hoặc là một extends của class StringInterface

Tuy nhiên cách này chỉ hoạt động với các biến đầu vào là đối tượng. Với yêu cầu của bạn thì cần sử dụng các hàm is_... có sẵn của PHP (Kết quả là một boolean), hoặc là dùng hàm gettype (kết quả là một chuỗi).
PHP Code:
abc(124);
abc('124');

function 
abc($test) {
  
var_dump(is_string($test)); // Kết quả là boolean nên có thể xài kiểu if(is_string($test)) {...}
  
echo gettype($test);// Cho ra các giá trị string, integer... (Coi tên chính xác ở http://www.php.net/manual/en/language.types.php); có thể kiểm tra bằng if(gettype($test) === 'string') {...}

thuyduongcd viết 12:55 ngày 10/10/2018
Vấn đề là làm như thế để làm gì? Nếu người ta đưa vào string thì hàm bị lỗi à? Thế thì trong hàm cứ check nó có phải Int không, nếu không thì thí trả về lỗi.
guidingstar viết 12:49 ngày 10/10/2018
PHP là ngôn ngữ chủ yếu dùng cho web. Dù chỉ 1 lỗi thôi hiện lên trước mắt người truy cập thì đều k hay tẹo nào. Thay vì mất công như vậy, hãy đảm bảo rằng đoạn mã của bạn luôn nhận được đúng kiểu biến.
BnoL viết 12:55 ngày 10/10/2018
Bạn cần phân biệt Scripting language (Interpreted language) và Compiled language. Các ngôn ngữ scripting như PHP, Python, Ruby hay Javascript... vùng nhớ đc cấp phát động (dynamic scoping) và có kiểu dữ liệu động (dynamic typing), có thể hiểu nôn na là bản thân 1 variable không có kiểu dữ liệu (kiểu var) mà sẽ đc ép kiểu theo kiểu dữ liệu của giá trị của nó, (kể cả function cũng vậy, không có kiểu dữ liệu return ra) nên bạn không thể khai báo "int $a" mà là "var $a". Trong khi các ngôn ngữ compiled như C, C++, Java... có kiểu dữ liệu tĩnh (static typing) nên cần phải khai báo kiểu dữ liệu khi khởi tại variable.
nguoi.tap.code viết 12:49 ngày 10/10/2018
Các bác cho em hỏi câu hỏi ngu nữa ạ . em đọc trong php manual có đoạn

<?php
echo (int) ( (0.1+0.7) * 10 ); // echoes 7!
?>
vẫn chưa hiểu rõ lắm tại sao nó lại cho ra kết quả là 7 mà ko phải là 8
BnoL viết 12:59 ngày 10/10/2018
cái này là bug của PHP mà . Đừng tính toán = PHP nhá, chít có ngày

http://php.net/manual/en/language.types.float.php

Đọc cái warning!
Bài liên quan
0