Могут ли массивы PHP хранить элементы другого типа?
В других языках программирования определение массивов - это то, что может содержать похожие элементы. Например, если я объявляю что-то вроде int i[]
, он будет хранить целые числа, но в PHP один массив, кажется, содержит строки и числа вместе.
Будет ли число/целое число обрабатываться как строка в таком типе массива в PHP?
Ответы
Ответ 1
В соответствии с руководством PHP вы действительно можете хранить гетерогенные типы внутри массива PHP - прокрутите список до примера 3.
Обратите внимание, что, хотя в примере речь идет о ключах, являющихся ints или строками, значения, назначенные в примере, также являются как ints, так и строками, демонстрируя, что можно хранить разнородные типы.
Помните, что в случае клавиш с различной типизацией задействовано автоматическое кастинг, поэтому у вас могут быть неожиданные результаты в случае, когда, например, строка содержит допустимое десятичное представление.
Ответ 2
В массивах PHP нет даже массивов, они упорядочены хэш-таблицами.
Ответ 3
Не собираюсь вкладывать масла в огонь массивов PHP, здесь нет массивов...
Но да, вы можете поместить различные типы переменных (string, int,...) вместе в вещь PHP под названием Array.
Ответ 4
Вы можете хранить все, что хотите, в массиве.
Будет ли число/целое число обрабатываться как строка в таком типе массива в PHP?
Не хранить его. Однако, когда вы используете значение как таковое, PHP будет его преобразовывать. Использование значения определяет его интерпретацию. (Внимание, ключ преобразуется при хранении, однако, если он считается числовым)
Ответ 5
Да. В массиве PHP может быть несколько типов данных. Кроме того, вы должны отметить, что массивы в PHP на самом деле представлены в виде пар ключ-значение, где элементы, которые вы будете вводить в массив, являются значениями. Вы также можете явно определять ключи, когда вводите элементы в массив, но если вы этого не сделаете, PHP будет использовать индексы, начиная с 0. Пример: когда вы вводите <?php $array = array("foo", "bar", "hello", "world"); var_dump($array);?>
<?php $array = array("foo", "bar", "hello", "world"); var_dump($array);?>
<?php $array = array("foo", "bar", "hello", "world"); var_dump($array);?>
//var_dump сообщает вам тип и значение переменной, которую PHP будет интерпретировать как
array(4) {
[0] => string (3) "foo" [1] => string (3) "bar" [2] => string (5) "hello" [3] => string (5) "world"}
Кроме того, если у вас есть один ключ, определенный среди всех значений, например, например: <?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array);?>
<?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array);?>
<?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array);?>
PHP интерпретирует как array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" }
Reference- http://php.net/manual/en/language.types.array.php