Actualizado el martes, 7 mayo, 2024

Los tipos de datos en PHP pueden ser de «tipo escalar» o «tipo compuesto». Los tipos enteros, flotantes, booleanos y de string (cadena) son tipos escalares, mientras que los tipos de array (matriz) y objeto se clasifican como tipos compuestos. Los valores de más de un tipo se pueden almacenar juntos en una sola variable de un tipo compuesto.

En PHP, los objetos y las array son los dos tipos de datos compuestos.

  • Un array es una colección ordenada de elementos de otros tipos de datos, no necesariamente del mismo tipo.
  • Un objeto es una instancia de una clase incorporada o definida por el usuario, que consta de propiedades y métodos.

Array (matrices) en PHP

Un array (matriz) es una estructura de datos que almacena uno o más valores de datos en una sola variable. Un array en PHP es un mapa ordenado que asocia los valores a sus claves.

  • Hay dos formas de declarar un array en PHP. Una es usar la función incorporada array(), y la otra es poner los elementos del array entre corchetes.
  • Un array que es una colección de solo valores se denomina indexed array. Cada valor se identifica mediante un índice posicional que comienza desde 0.
  • Si el array es una colección de pares clave-valor, se denomina associative array. El componente clave del par puede ser un número o una cadena, mientras que la parte de valor puede ser de cualquier tipo.

La función array() en PHP

La función array() incorporada utiliza los parámetros que se le han dado y devuelve un objeto de tipo array. Uno o más parámetros separados por comas son los elementos del array.

array(mixed...$values):array

Cada valor entre paréntesis puede ser un valor singular (puede ser un número, un string, cualquier objeto o incluso otro array) o un par clave-valor. La asociación entre la clave y su valor se indica mediante el símbolo «=>».

Ejemplo

Echa un vistazo al siguiente ejemplo:

$arr1 = array(10, "asd", 1.55, true);

$arr2 = array("one"=>1, "two"=>2, "three"=>3);

$arr3 = array(
   array(10, 20, 30),
   array("Ten", "Twenty", "Thirty"),
   array("physics"=>70, "chemistry"=>80, "maths"=>90)
);

Uso de corchetes [ ]

En lugar de la función array(), los elementos de la array separados por comas también se pueden poner entre corchetes para declarar un objeto de array. También en este caso, los elementos pueden ser valores singulares o una cadena u otra array.

$arr1 = [10, "asd", 1.55, true];

$arr2 = ["one"=>1, "two"=>2, "three"=>3];

$arr3 = [
   [10, 20, 30],
   ["Ten", "Twenty", "Thirty"],
   ["physics"=>70, "chemistry"=>80, "maths"=>90]
];

Acceso a los elementos del array

Para acceder a cualquier elemento de un array determinada, puede utilizar la sintaxis array[key]. Para un array indexada, coloque el índice entre corchetes, ya que el índice en sí es de todos modos la clave.

<?php
   $arr1 = [10, 20, 30];
   $arr2 = array("one"=>1, "two"=>2, "three"=>3);

   var_dump($arr1[1]);
   var_dump($arr2["two"]);
?>

Producirá el siguiente resultado:

int(20)
int(2)

Recorrido de array en PHP

También puede usar el bucle foreach para iterar a través de un indexed array.

<?php
   $arr1 = [10, 20, 30, 40, 50];
   foreach ($arr1 as $val){
      echo "$val\n";
   } 
?>

Producirá el siguiente resultado:

10
20
30
40
50

Tenga en cuenta que PHP trata internamente el indexed array o array indexado como un associative array o matriz asociativa, y el índice se trata como la clave. Este hecho puede ser verificado por la salida var_dump() de la matriz.

Podemos desempaquetar cada elemento de la matriz indexada en las variables clave y valor con la sintaxis foreach:

<?php
   $arr1 = [10, 20, 30, 40, 50];
   foreach ($arr1 as $key => $val){
      echo "arr1[$key] = $val" . "\n";
   }
?>

Producirá el siguiente resultado:

arr1[0] = 10
arr1[1] = 20
arr1[2] = 30
arr1[3] = 40
arr1[4] = 50

El bucle foreach también se usa para iterar a través de un array asociativa, aunque también se puede usar cualquier otro tipo de bucle con alguna maniobra.

Echemos un vistazo a la implementación del bucle foreach, con cada par k-v desempaquetado en dos variables.

<?php
   $capitals = array(
      "Maharashtra"=>"Mumbai", 
      "Telangana"=>"Hyderabad", 
      "UP"=>"Lucknow", 
      "Tamilnadu"=>"Chennai"
   );

   foreach ($capitals as $k=>$v) {
      echo "Capital of $k is $v" . "\n";
   }
?>

Producirá el siguiente resultado:

Capital of Maharashtra is Mumbai
Capital of Telangana is Hyderabad
Capital of UP is Lucknow
Capital of Tamilnadu is Chennai

Objetos en PHP

En PHP, un objeto es un tipo de datos compuesto. Es una instancia de una clase incorporada o definida por el usuario. A continuación se muestra una clase PHP simple:

classSayHello{functionhello(){echo"Hello World";}}

Para declarar un objeto de una clase, necesitamos usar el operador new.

$obj=newSayHello;

Ahora podemos llamar a su método:

<?php
   class SayHello {
      function hello() {
         echo "Hello World". PHP_EOL;
      }
   }

   $obj=new SayHello;
   var_dump(gettype($obj));
   $obj->hello();
?>

Producirá el siguiente resultado:

string(6) "object"
Hello World

stdClass

PHP proporciona stdClass como una clase vacía genérica que es útil para agregar propiedades dinámicamente y convertirlas. Para empezar, un objeto de stdClass es nulo. Podemos agregarle propiedades dinámicamente.

<?php
   $obj=new stdClass;
   $obj->name="Deepak";
   $obj->age=21;
   $obj->marks=75;

   print_r($obj);
?>

Producirá el siguiente resultado:

stdClass Object (
   [name] => Deepak
   [age] => 21
   [marks] => 75
)

Conversión de un array objeto en PHP

Un array en PHP puede ser encasillado en un objeto de la siguiente manera:

<?php
   $arr=array("name"=>"Deepak", "age"=>21, "marks"=>75);
   $obj=(object)$arr;

   print_r($obj);
?>

Producirá el siguiente resultado:

stdClass Object (
   [name] => Deepak
   [age] => 21
   [marks] => 75
)

Conversión de objetos a array en PHP

Por el contrario, un objeto se puede convertir en un array. Echa un vistazo al siguiente ejemplo:

<?php
   $obj=new stdClass;
   $obj->name="Deepak";
   $obj->age=21;
   $obj->marks=75;

   $arr=(array)$obj;
   print_r($arr);
?>

Producirá el siguiente resultado:

Array
(
   [name] => Deepak
   [age] => 21
   [marks] => 75
)

Conversión de tipo escalar a tipo de objeto en PHP

Una variable de cualquier tipo escalar también se puede convertir en un objeto mediante la conversión de tipos. El valor de la variable escalar se convierte en el valor de la propiedad escalar del objeto.

<?php
   $name="Deepak";
   $age=21;
   $percent=75.50;

   $obj1=(object)$name;
   print_r($obj1);

   $obj2=(object)$age;
   print_r($obj2);

   $obj3=(object)$percent;
   print_r($obj3);
?>

Producirá el siguiente resultado:

stdClass Object
(
   [scalar] => Deepak
)
stdClass Object
(
   [scalar] => 21
)
stdClass Object
(
   [scalar] => 75.5
)