Работа с массивом с периодами в ключевых значениях - PullRequest
9 голосов
/ 28 декабря 2010

Я получаю данные из массива.По какой-то причине в массиве есть ключевые значения, такие как [3.3], из-за которых у меня возникают проблемы с получением данных.

У меня есть этот массив [3.3] => First Name [3.6] => Last Name[2] => email@example.com.

Когда я пытаюсь вызвать $array[3.3]он возвращает ноль, но когда я звоню $array[2], мне дают электронное письмо.Есть идеи?

Ответы [ 5 ]

24 голосов
/ 28 декабря 2010

Используйте одинарные кавычки при обращении к значению ключа (в основном обрабатывайте его как строку, это то, что, вероятно, делает PHP)

echo $array['3.3'];
14 голосов
/ 28 декабря 2010

Из руководства по PHP:

Плавания в ключе усекаются до целого числа.

Итак, вы пытаетесь получить массив $ [3], который не существует, поэтому вы получаете Null

8 голосов
/ 28 декабря 2010

Ключ может быть целым числом или строкой.Если ключ является стандартным представлением целого числа, оно будет интерпретировано как таковое (т. Е. «8» будет интерпретировано как 8, а «08» будет интерпретировано как «08»). Плавающие в ключе усекаются до целых чисел. Индексированные и ассоциативные типы массивов одного типа в PHP, которые могут содержать как целые, так и строковые индексы.

Поскольку число с плавающей точкой всегда будет усечено как целое число (например, 3.3 всегда будет интерпретироваться массивом как 3), мне интересно, ожидает ли ваш массив String, а не число с плавающей точкой.Вы пробовали $ array ["3.3"] вместо $ array [3.3]?

2 голосов
/ 28 декабря 2010

Полагаю, что с PHP-трансляцией есть что-то общее 3.3 => float

try $ array ['3.3']

0 голосов
/ 24 августа 2017

Число с плавающей запятой и числовая строка в ключе усекаются до целое число .

Выведите этот код:

$array = [1 => "a", "1" => "b", 1.5 => "c", true => "d"];
print_r($array);

будет:

Array
(
    [1] => d
)
...