Home >Backend Development >PHP Problem >How to determine whether it is an array or an object in php

How to determine whether it is an array or an object in php

藏色散人
藏色散人Original
2021-06-21 10:25:485369browse

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.

How to determine whether it is an array or an object in php

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn