Maison >développement back-end >Problème PHP >Comment déterminer s'il s'agit d'un tableau ou d'un objet en php
Comment PHP détermine s'il s'agit d'un tableau ou d'un objet : 1. Jugez par le type de variable et l'attribut de longueur de la variable 2. Utilisez la méthode toString pour convertir l'objet en d'autres types de chaîne ; ; 3. Jugez par instanceof; 4 , utilisez isArray pour juger, etc.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3.
Comment PHP détermine-t-il s'il s'agit d'un tableau ou d'un objet ? Comment déterminer si une variable est un tableau ou un objet
Méthode 1 : En déterminant le type de la variable et l'attribut de longueur de la variable (à une exception près, l'objet arguments – où les données sont stockées lorsque passer des paramètres à une fonction)
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属性,所以是未定义。
Méthode 2 :
Utilisez la méthode toString pour convertir l'objet en d'autres types de chaînes Cet exemple prouve bien que l'objet arguments n'est pas un tableau, mais. un objet
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));
Méthode 3 : —>Impossible
instanceof indique si l'objet est une instance d'une classe spécifique.
Conclusion : Le principe de instanceof pour détecter si un objet A est une instance d'un autre objet B est de vérifier si l'objet pointé par le prototype de l'objet B est sur la chaîne [[prototype]] d'objet UN. Si c'est le cas, renvoyez vrai, sinon, renvoyez faux. Il existe cependant un cas particulier lorsque le prototype de l'objet B est nul, une erreur sera signalée (similaire à une exception de pointeur nul).
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. Dans ECMAScript 5, vous pouvez utiliser isArray pour déterminer
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 Utilisez la fonction isPrototypeOf()
Principe : Détecter si un objet est le prototype de. Tableau (ou dans Dans la chaîne de prototypes, non seulement l'objet parent direct peut être détecté, mais également tous les objets parents de toute la chaîne de prototypes peuvent être détectés)
Méthode d'utilisation : parent.isPrototypeOf(child) pour détecter si le parent est le prototype de l'enfant ;
Il convient de noter que la fonction implémentée par la fonction isPrototypeOf() est très similaire à l'opérateur instantcof
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); //true7. Utilisez la méthode concat – flexiblearray.concat(array1,array2,…)Renvoie un nouveau tableau, qui est une combinaison de deux tableaux ou plus.
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这个错误。Étude recommandée : "
Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!