PHP가 배열인지 객체인지 판단하는 방법: 1. 변수의 유형과 변수의 길이 속성을 기준으로 판단합니다. 2. 객체를 다른 유형의 문자열로 변환하려면 toString 메서드를 사용합니다. 4. isArray 판단 등을 사용합니다.
이 문서의 운영 환경: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!