@driverx18

Почему результат вывода такой?

$arr = [
     true => 'test0',
     1 => 'test1',
     'true' => 'test2',
     '1' => 'test3'
  ];
     var_dump($arr[true]);

Выводит test3.
Почему?
  • Вопрос задан
  • 80 просмотров
Решения вопроса 3
New_Horizons
@New_Horizons
Бред:
Преобразование в строку

Значение boolean TRUE преобразуется в строку "1", а значение FALSE преобразуется в "" (пустую строку). Это позволяет преобразовывать значения в обе стороны - из булева типа в строковый и наоборот.


Массивы
key может быть либо типа integer, либо типа string. value может быть любого типа.
Ответ написан
Комментировать
@andreysuha
Что то знаю
Подозреваю потому что в массиве не может быть двух одинокавых ключей.
Для примера такой массив

[
    'a' => 1,
    'a' => 2,
    'a' => 3,
]


В это случае в массиве будет один елемет с ключём а равный 3, так как 2 предыдущих перезвпишутся

Так как все Ваши ключи имеют true если их привести к булевому виду, то каждый следующий ключ перепишет первый Клемент Вашего массива
Ответ написан
Комментировать
@entermix
<?php

$var = (string) true;
echo $var; // 1

$var = (string) '1';
echo $var; // 1

$var = (string) '1';
echo $var; // 1


Вы перезаписываете значение массива с одним и тем же ключем.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы