Какой массив использует PHP?

Я могу определить array в PHP следующим образом:

$array = array();

В С++ у нас есть два типа массива.

  • Первый тип представляет собой массив фиксированного размера, например:

    int arr[4]; // 4 ints, hardcoded size
    
  • Второй тип представляет собой массив с динамическим размером

    std::vector<int> v; // can grow and shrink at runtime
    

Какой массив использует PHP? Являются ли оба типа массивов в PHP? Если да, можете ли вы привести примеры?

Ответ 1

PHP не такой строгий, как C или С++. В PHP вам не нужно указывать тип данных, которые нужно поместить в массив, вам также не нужно указывать размер массива.

Если вам нужно объявить массив целых чисел в С++, вы можете сделать это следующим образом:

int array[6];

Теперь этот массив содержит целые числа. В PHP массив может содержать почти все:

$arr = array();
$arr[] = 1;
$arr[] = 2;
$arr[] = 3;
$arr[] = 4;
var_dump($arr);   //Prints [1,2,3,4]
$arr[] = 'hello world';   //Adding a string. Completely valid code
$arr[] = 3.14;   //Adding a float. This one is valid too
$arr[] = array(
           'id' => 128,
           'firstName' => 'John'
           'lastName' => 'Doe'
);  //Adding an associative array, also valid code
var_dump($arr);  //prints [1,2,3,4,'hello world',3.14, [ id => 128, firstName => 'John', lastName => 'Doe']]

Если вы исходите из фона на С++, лучше всего рассматривать массив PHP как общий вектор, который может хранить все.

Ответ 2

Из php.net

Массив в PHP на самом деле является упорядоченной картой. Карта - это тип, который сопоставляет значения ключам. Этот тип оптимизирован для нескольких различные виды использования; его можно рассматривать как массив, список (вектор), хэш таблица (реализация карты), словарь, коллекция, стек, очереди и, возможно, больше. Поскольку значениями массива могут быть другие массивы, деревья и многомерные массивы также возможны.

Ответ 3

PHP использует три типа массива:

Числовой массив - массив с числовым индексом. Значения хранятся и доступны по линейному принципу.

Ассоциативный массив - массив со строками в качестве индекса. Это сохраняет значения элементов в сочетании с ключевыми значениями, а не строгим линейным порядком индекса.

Многомерный массив. Доступ к массиву, содержащему один или несколько массивов и значений, осуществляется с использованием нескольких индексов.

Числовой массив Ex:

 $numbers = array( 1, 2, 3, 4, 5);

Ассоциативный массив Ex:

$salaries = array("mohammad" => 2000, "qadir" => 1000, "zara" => 500);

Многомерный массив Ex:

$marks = array( 
            "mohammad" => array (
               "physics" => 35,
               "maths" => 30,   
               "chemistry" => 39
            ),

            "qadir" => array (
               "physics" => 30,
               "maths" => 32,
               "chemistry" => 29
            ),

            "zara" => array (
               "physics" => 31,
               "maths" => 22,
               "chemistry" => 39
            )
         );

Ответ 4

А php-массив в терминах С++ примерно равен:

std::map< std::experimental::any, std::experimental::any >

где std::experimental::any - тип, который может содержать в основном что угодно. Эквивалент php также может быть отсортирован с эквивалентом <.

Не совсем - ближе к истине то, что php-массив является абстрактным интерфейсом, который предоставляет большую часть операций, которые предоставил выше map в С++ (С++ map является конкретной реализацией).

Массивы с непрерывными числовыми ключами, хранящимися в Variant, обрабатываются так же, как a std::vector<Variant>, а под интерфейсом php-система может даже использовать vector<Variant> или что-то подобное для хранения или даже иметь две разные внутренние детали: одну из которых для смежных блоков целых индексированных данных, а другой для разреженных записей. (Я не знаю, как выполняется PHP, но именно так я бы это сделал)

Ответ 5

В основном в PHP есть три шаблона использования.

Индексированный массив: массивы с последовательным числовым индексом, например 0, 1, 2 и т.д. Пример:

$myarray = array();
$myarray[0] = "test data 1";
$myarray[1] = "test data 2";
$myarray[3] = "test data 3";

Ассоциативный массив: это наиболее часто используемый тип массивов PHP, чьи элементы определены в парах ключ/значение. Пример:

$myarray = array();
$myarray["key1"] = "value 1";
$myarray["key2"] = "value 2";
$myarray["key3"] = "value 3";

Многомерный массив: массивы, элементы которых могут содержать один или несколько массивов. На уровне измерений нет предела. Пример:

$myarray = array();
$myarray[0] = array("data01","data02","data03");
$myarray[1] = array("data11","data12","data13");

Подробнее см. Массивы PHP 5.

Ответ 6

PHP использует числовые, ассоциативные массивы и многомерные массивы. Массивы имеют динамический характер и не должны упоминаться ни один размер. Пройдите php.net/manual/en/language.types.array.php, чтобы найти информацию.