Home >Backend Development >PHP Problem >How to determine whether it is an array or an object in php
php method to determine whether it is an array or an object: 1. Judge by the type of the variable and the length attribute of the variable; 2. Use the toString method to convert the object into other types of string; 3. Judge by instanceof; 4 , use isArray to judge, etc.
The operating environment of this article: Windows 7 system, PHP version 7.1, Dell G3 computer.
How does PHP determine whether it is an array or an object? How to determine whether a variable is an array or an object
Method 1: By determining the type of the variable and the length attribute of the variable (with one exception, the arguments object – where the data is stored when passing parameters to a function)
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属性,所以是未定义。
Method 2:
Use the toString method to convert the object into other types of string. This example well proves that the arguments object is not an array, but an object
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));
Method 3: —>Not feasible
instanceof indicates whether the object is an instance of a specific class.
Conclusion: The principle of instanceof to detect whether an object A is an instance of another object B is to check whether the object pointed to by the prototype of object B is on the [[prototype]] chain of object A. If it is, return true, if not, return false. However, there is a special case. When the prototype of object B is null, an error will be reported (similar to a null pointer exception).
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. In ECMAScript 5, you can use isArray to determine
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. Use isPrototypeOf() function
Principle: Detect whether an object is the prototype of Array (or in In the prototype chain, not only the direct parent object can be detected, but also all parent objects in the entire prototype chain can be detected)
Usage method: parent.isPrototypeOf(child) to detect whether parent is the prototype of child;
It should be noted that the function implemented by the isPrototypeOf() function is very similar to the instancof operator;
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. Use the constructor attribute
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. Use the concat method – flexible
array.concat(array1,array2,…)
Returns a new array, which is a combination of two or more arrays
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这个错误。
Recommended Study: "PHP Video Tutorial"
The above is the detailed content of How to determine whether it is an array or an object in php. For more information, please follow other related articles on the PHP Chinese website!