Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.23;
Скачать: CL | DM;

Вниз

Первый элемент массива PHP?   Найти похожие ветки 

 
My_name   (2009-06-22 18:01) [0]

Интересует как достать первый элемент массива в PHP, если он(массив) начинается не с 0 элемента, допустим ассоциативный? Первое что приходит на ум мне:

foreach ( $array as $element ) {
  $firstElement = $element; break;
}

Но наверняка есть ведь способ и поумней?)


 
clickmaker ©   (2009-06-22 18:11) [1]

$array[array_keys($array)[0]]


 
McSimm ©   (2009-06-22 18:19) [2]

reset(); current();


 
palva ©   (2009-06-22 19:11) [3]


> $array[array_keys($array)[0]]

Хитро. Тогда уж лучше array_values($array)[0]
Только одним оператором без промежуточной переменной это тоже не заработает (почему-то).
Надо так:
$a=array_values($array);
$v= $a[0];

Лучший способ (ИМХО) указал McSimm


 
My_name   (2009-06-22 19:14) [4]

current() написано вернет FALSE даже если элемент массива ( "", 0 ) php.net рекомендует использовать each()...


 
palva ©   (2009-06-22 19:30) [5]


> current() написано вернет FALSE

Брешут. Проверьте:
$array = array(3=>"", 5=>55, "a"=>"aa");
reset($array);
echo gettype(current($array)); // string

Другое дело, если первый элемент массива FALSE, тогда действительно вы не сможете отличить то ли массив пустой, то ли первый элемент равен FALSE. Но даже и тогда менее затратно проверить ключ функцией key. Поскольку each возвращает массив из четырех элементов (на все случаи жизни).


 
palva ©   (2009-06-22 19:53) [6]

Поясню. Ключ всегда число или строка. Поэтому проверяя то, что вернет key на NULL вы поймете, что находитесь вне массива (массив пустой).

Даже если вы попробуете создать массив с ключом NULL он будет заменен на пустую строку:

$array = array(NULL=>FALSE, 5=>55, "a"=>"aa");
$array[""]=33;
reset($array);
echo gettype(key($array))."\n"; // string;
echo current($array)."\n"; // 33;
$array = array();
reset($array);
echo is_null(key($array))."\n"; // 1


 
Дмитрий С ©   (2009-06-23 10:00) [7]

reset($arr)
if (list($dummy, $value)=each($arr)) {
:)
}


 
test ©   (2009-06-23 10:02) [8]

А разве в PHP нет ?
for each elem in list do



Страницы: 1 вся ветка

Текущий архив: 2009.08.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
2-1245840591
Sly_Laban
2009-06-24 14:49
2009.08.23
*.doc-файл из RichEdit a


2-1245244901
TheEd
2009-06-17 17:21
2009.08.23
Странное поведение ShowModal...


15-1245679260
My_name
2009-06-22 18:01
2009.08.23
Первый элемент массива PHP?


2-1246011562
AndrewG
2009-06-26 14:19
2009.08.23
Получить номер элемента в массиве


15-1245730848
@!!ex
2009-06-23 08:20
2009.08.23
Виста не запоминает мониторы.