Имеется многомерный массив, вложенностью где-то 5. Вторая вложенность выглядит где-то так: Код (Text): Array ( [Подложка] => Array ( [sds1] => Array ( [id] => 7 [p_type] => 7 ............................. ) ) [Плинтус] => Array ( [id] => 8 ) [12] => Array ( [id] => 9 ) ) Этот массив обрабатывается в foreach, где $p_type => $products. $p_type -- это "Подложка", "Плинтус", "12". Но чтобы достать "p_type" из подложки, нужно залезть во внутрь "sds1", что я делаю при помощи функции current, которая возвращает текущий элемент массива current($products) -- Array( [id] => 7 [p_type] => 7).... Далее, я обращаюсь к индексу "p_type" массива и получаю 7: PHP: <?php $first = current($products); echo $first["p_type"]; Самое интересное, что это не вызывает никаких нотисов (ведь в "Плинтус" и "12" нет ключа "p_type"), а просто выдает значения id, т.е 8 и 9! Объяснить я могу подобное следующим: Когда мы берем current($products) для них, то получаем [id] => 9, значение -- это string/int, а не array. Когда мы обращаемся к string через [], то интерпретатор приводит к int значение в скобках, в результате у нас возвращается $first[0] Прав ли я? Надо проверить, по идее от двухзначного числа возвращается только первая цифра. Беда еще в том, что isset($first["p_type"]) == true. Вот они, подводные грабли [] для строк. P.S. PHP 5.25 UPD: Мои опасения по поводу первой цифры оправдались. Выход скорее всего будет не через проверку с помощью isset, а через проверку с помощью is_array UPD2: Пост может показаться странным. Просто сначала у меня было предположение другое, потом я докопался до истины, во время написания)
Я в однажды собирал в массив всякую информацию, и в каком-то месте присоеденил к нему строковую переменную: PHP: $array.=$var; Потом чуть мозг не сломал, выясняя, почему $array[0] равно "A"