>백엔드 개발 >PHP 문제 >PHP에서 배열인지 객체인지 확인하는 방법

PHP에서 배열인지 객체인지 확인하는 방법

藏色散人
藏色散人원래의
2021-06-21 10:25:485370검색

PHP가 배열인지 객체인지 판단하는 방법: 1. 변수의 유형과 변수의 길이 속성을 기준으로 판단합니다. 2. 객체를 다른 유형의 문자열로 변환하려면 toString 메서드를 사용합니다. 4. isArray 판단 등을 사용합니다.

PHP에서 배열인지 객체인지 확인하는 방법

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, Dell G3 컴퓨터.

PHP는 배열인지 객체인지 어떻게 판단하나요? 변수가 배열인지 객체인지 확인하는 방법

방법 1: 변수의 유형과 변수의 길이 속성을 결정합니다(인수 객체는 제외 – 매개변수를 변수에 전달할 때 데이터가 저장되는 위치). 함수)

      var arr=[2,3,4];
      var obj={"name":"maomao","age":20};
      console.log(typeof arr);   //object
      console.log(typeof obj);   //object
      console.log(arr.length);   //3
      console.log(obj.length);   //undefined
      console.log(obj.name);     //maomao
      //这里说明在对象中并没有length属性,所以是未定义。

방법 2:

toString 메서드를 사용하여 객체를 다른 유형의 문자열로 변환합니다. 이 예는 인수 객체가 배열이 아니라 객체

  var arr=[2,3,4];
        var obj={"name":"maomao","age":20};
        // console.log(arr.toString());  //'2,3,4'
        // console.log(obj.toString());  //[object Object]
        function sum(a,b){
           // console.log(arguments);
           // console.log(typeof arguments);    //object
           // console.log(arguments.length);    //2 根据具体调用函数传的实参决定
           // console.log(arguments.toString()); //[object Arguments]
           return a+b;
        }
        alert(sum(3,4));

방법 3: —>Not임을 잘 증명합니다. available

instanceof는 객체가 특정 클래스의 멤버인지 여부를 나타냅니다.

결론: 객체 A가 다른 객체 B의 인스턴스인지 여부를 감지하는 인스턴스 오브의 원리는 객체 B의 프로토타입이 가리키는 객체가 객체 A의 [[프로토타입]] 체인에 있는지 확인하는 것입니다. 그렇다면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 그러나 특별한 경우가 있습니다. 객체 B의 프로토타입이 null이면 오류가 보고됩니다(null 포인터 예외와 유사).

    var arr=[2,3,4,"haa"];
        var obj={"name":"maomao","age":20};
        console.log(arr instanceof Array);  //true
        console.log(obj instanceof Object);  //true
        console.log(arr instanceof Object);  //true
        ---这里跟网上的不同,不知道是什么原因
        console.log(obj instanceof Array);  //false

4. ECMAScript 5

        var arr=[2,3,4,"haa"];
        var obj={"name":"maomao","age":20};
        console.log(Array.isArray(arr));  //true
        console.log(Array.isArray(obj));  //false
        //注意没有isObject这种方法   暂时

5에서 isArray를 사용할 수 있습니다. isPrototypeOf() 함수를 사용하세요.

Principle: 객체가 Array의 프로토타입인지(또는 프로토타입 체인에 있는지) 감지할 수 있습니다. 직접적인 상위 객체일 뿐만 아니라 전체 프로토타입 체인에서 모든 상위 객체를 감지할 수도 있습니다)

사용 방법: parent.isPrototypeOf(child)는 상위가 하위의 프로토타입인지 감지합니다.

에 의해 구현된 함수에 유의해야 합니다. isPrototypeOf() 함수는 instancof 연산자 ;

  var arr=[2,3,4,"haa"];
    var object={"name":"maomao","age":20};
    console.log(Array.prototype.isPrototypeOf(arr));    //true
    console.log(Array.prototype.isPrototypeOf(object)); //false
    console.log(Object.prototype.isPrototypeOf(arr));   //true                   console.log(Object.prototype.isPrototypeOf(object));  //true
   //从上面上看Array.prototype.isPrototypeOf()可以作为判断的依据

6과 매우 유사합니다. 생성자 속성

var arr=[2,3,4,"haa"];
var obj={"name":"maomao","age":20};
console.log(arr.constructor);  //function Array() { [native code] }
console.log(obj.constructor);  //function Object() { [native code] }
console.log(arr.constructor==Array);   //true
console.log(arr.constructor==Object);  //false
console.log(obj.constructor==Array);   //false
console.log(obj.constructor==Object);  //true

7을 사용하세요. concat 메소드를 사용하세요 – 유연한

array.concat(array1,array2,…)

새 배열을 반환합니다. , 두 개 이상의

var arr=[2,3,4];
var obj={"name":"maomao","age":20,'concat':function(){ return 1;}};
console.log(arr.concat());  //[2,3,4]
console.log(obj.concat());  //1 当然这个concat是我自定义上去的方法,返回值也是可以定制的。如果没有该方法则会报出Uncaught TypeError: obj.concat is not a function这个错误。

로 구성됨 여러 배열로 구성됨 추천 학습: "PHP Video Tutorial"

위 내용은 PHP에서 배열인지 객체인지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.