2016-05-31 2 views
10

я могу определить array в PHP, как это:Какой массив использует PHP?

$array = array(); 

В C++, у нас есть два вида массива.

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

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

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

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

+6

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

+2

Если вы привыкли к C/C++, тогда стандартный «массив» PHP на самом деле является «hashmap», , хотя более сродни вашему массиву динамического размера .... хотя PHP также предоставляет [SPLFixedArray] (http://nl3.php.net/manual/en/class.splfixedarray.php), хотя ваши обычные функции array_ * t работа с этим –

ответ

15

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

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

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']] 

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

+0

, поэтому мы можем сказать, что все типы массивов в динамическом размере PHP (например, вектор, размер которого зависит от времени выполнения). @ Dimlucas – sam

+0

@sam Да, это правильно. Другой способ, которым вы можете просмотреть массив PHP, - это список «указателей» (я использую слово «указатель» только для объяснения, в PHP нет типа указателя) в память, которая может содержать что угодно, даже экземпляр класс. Вы можете добавлять или удалять элементы из любого места в массиве, не нарушая его. Еще одна вещь, которая, как я думаю, вам интересна, заключается в том, что вы можете опустить '$ arr = $ array();' и мой пример кода будет работать. Это так, как работает PHP – dimlucas

+1

OK спасибо ... теперь ясно @dimlucas – sam

1

В основном есть три шаблона использования массива в 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 Arrays.

+3

** три тип ** неправильный. PHP имеет только один тип массива, и он может содержать почти все и может обрабатываться по-разному. – VSG24

+0

@ vsg24 согласен с тобой –

+0

@ VSG24 С технической точки зрения, вы правы. Я прочитал этот ответ как введение в три типа структур, которые вы увидите в php. –

12

От php.net

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

0

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

+1

Нет, в PHP существует только один тип массива, который ведет себя по-разному в зависимости от того, как он используется. –

+4

Ваш ответ, я боюсь, звучит так, будто вы говорите, что есть 3 разных типа. Я являюсь носителем английского языка, и я прочитал его так, чтобы вы могли пересмотреть свой комментарий. –

+0

Нет, это не так, я должен был это четко сказать. –

2

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

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

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

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

числовой массив Пример:

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

ассоциативного массива Пример:

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

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

$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 
      ) 
     ); 
2

массив PHP, в C Термины ++, примерно:

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

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

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

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

Смежные вопросы