Làm cách nào để khai báo nhiều hơn một biến PHP?

Khai báo nhiều biến trong một lần khai báo có thể gây nhầm lẫn về loại biến và giá trị ban đầu của chúng. Đặc biệt, không khai báo bất kỳ điều nào sau đây trong một tờ khai

  • Các loại biến khác nhau
  • Một hỗn hợp của các biến được khởi tạo và chưa được khởi tạo

Nói chung, bạn nên khai báo từng biến trên dòng riêng của nó với chú thích giải thích về vai trò của nó. Mặc dù không bắt buộc phải tuân thủ hướng dẫn này, nhưng phương pháp này cũng được khuyến nghị trong Quy ước mã cho ngôn ngữ lập trình Java, §6. 1, "Số trên mỗi dòng" []

Hướng dẫn này áp dụng cho

Ví dụ về mã không tuân thủ (Khởi tạo)

Ví dụ về mã không tuân thủ này có thể khiến lập trình viên hoặc người đánh giá nhầm tưởng rằng cả ij đều được khởi tạo thành 1. Trên thực tế, chỉ có j được khởi tạo, trong khi i vẫn chưa được khởi tạo

Giải pháp tuân thủ (Khởi tạo)

Trong giải pháp tuân thủ này, rõ ràng là cả ij đều được khởi tạo thành 1

int i = 1;  // Purpose of i...
int j = 1;  // Purpose of j...

Giải pháp tuân thủ (Khởi tạo)

Trong giải pháp tuân thủ này, rõ ràng là cả ij đều được khởi tạo thành 1

Khai báo từng biến trên một dòng riêng biệt là phương pháp ưa thích. Tuy nhiên, nhiều biến trên một dòng có thể chấp nhận được khi chúng là các biến tạm thời nhỏ chẳng hạn như chỉ số mảng

Ví dụ về mã không tuân thủ (Các loại khác nhau)

Trong ví dụ mã không tuân thủ này, lập trình viên khai báo nhiều biến, bao gồm cả một mảng, trên cùng một dòng. Tất cả các thể hiện của loại

public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
4 đều có quyền truy cập vào các phương thức của lớp
public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
5. Tuy nhiên, rất dễ quên rằng các mảng cần được xử lý đặc biệt khi một số phương thức này bị ghi đè

public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}

Khi một phương thức

public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
5, chẳng hạn như
public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
7, bị ghi đè, một lập trình viên có thể vô tình cung cấp một triển khai cho loại
public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
4 mà không xem xét rằng
public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
9 là một mảng của
public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
4 chứ không phải là một tham chiếu đến một đối tượng của loại
public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
4

public String toString() {
  return a.toString() + b.toString() + 
         c.toString() + d.toString();
}

Tuy nhiên, ý định của lập trình viên có thể là gọi

public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
7 trên từng phần tử riêng lẻ của mảng
public class Example {
  private T a, b, c[], d;

  public Example(T in) {
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}
9

// Correct functional implementation
public String toString(){
  String s = a.toString() + b.toString();
  for (int i = 0; i < c.length; i++){
    s += c[i].toString();
  }
  s += d.toString();
  return s;
}

Giải pháp tuân thủ (Các loại khác nhau)

Giải pháp tuân thủ này đặt mỗi khai báo trên một dòng riêng và sử dụng ký hiệu ưu tiên cho khai báo mảng

public class Example {
  private T a;   // Purpose of a...
  private T b;   // Purpose of b...
  private T[] c; // Purpose of c[]...
  private T d;   // Purpose of d...

  public Example(T in){
    a = in;
    b = in;
    c = (T[]) new Object[10];
    d = in;
  }
}

khả năng ứng dụng

Khai báo nhiều biến trên mỗi dòng có thể làm giảm khả năng đọc mã và dẫn đến sự nhầm lẫn của lập trình viên

Khi có nhiều hơn một biến được khai báo trong một lần khai báo, hãy đảm bảo rằng cả kiểu và giá trị ban đầu của mỗi biến đều hiển nhiên

Các khai báo của các chỉ số vòng lặp nên được bao gồm trong một câu lệnh

public String toString() {
  return a.toString() + b.toString() + 
         c.toString() + d.toString();
}
4 ngay cả khi điều này dẫn đến các khai báo biến thiếu nhận xét về mục đích của biến

public class Example {
  void function() {
    int mx = 100; // Some max value

    for (int i = 0; i < mx; ++i ) {
      /* .. */
    }

  }
}

Những khai báo như vậy không bắt buộc phải ở một dòng riêng và phần chú thích giải thích có thể được bỏ qua

Làm cách nào để khai báo nhiều biến trong PHP?

Ngoài ra, nếu bạn chỉ muốn "khai báo" chúng vì lý do nào đó, bạn có thể đặt tất cả chúng trên một dòng với ; . .
@JaredFarrish $foo; . biến không xác định. . .
Điều này sẽ không làm cho tất cả các giá trị thay đổi nếu bạn chỉ thay đổi giá trị của một biến?

Tôi có thể khai báo nhiều biến trên một dòng không?

Mỗi khai báo phải dành cho một biến duy nhất, trên dòng riêng của nó, với chú thích giải thích về vai trò của biến đó. Khai báo nhiều biến trong một lần khai báo có thể gây nhầm lẫn về kiểu của biến và giá trị ban đầu của chúng

Làm cách nào để lưu trữ nhiều biến trong một biến trong PHP?

Để lưu trữ nhiều giá trị, có hai cách thực hiện tác vụ. Một cách là gán từng giá trị cho một biến duy nhất và cách còn lại, hiệu quả hơn nhiều, là gán nhiều giá trị cho một biến. Đó là những gì chúng ta gọi là một mảng. Một mảng là một cách để lưu trữ nhiều giá trị trong một biến duy nhất.

Có thể khai báo nhiều loại biến trong một lần khai báo không?

Trong Go, có thể khai báo nhiều biến trên cùng một dòng .