powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Как обратиться к единственному элементу массива?
14 сообщений из 14, страница 1 из 1
PHP: Как обратиться к единственному элементу массива?
    #39834522
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сложный массив $a (получаемый из JSON).
Мне нужно его отфильтровать и использовать полученное значение.
Код: php
1.
2.
3.
4.
5.
6.
$a = ['a','b','c','d'];
$v = 'b';
$a = array_filter($a, function($item) use($v) { return $item == $v; });
if (empty($a)) return [];
$a = $a[0];
return $a;


Приведенный код не работает, потому что array_filter сохраняет ключи и оставшийся в массиве элемент имеет индекс не 0, а 1.
Чтобы работало, нужно как-нибудь очистить ключи, например написав предпоследнюю строчку так: $a = array_values($a)[0].
А можно получить оставшийся элемент без лишних преобразований?
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834584
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Судя по тому, что оно у тебя делает, можно написать в 1 строку:
Код: php
1.
    return array_search($v, $a) !== false ? $v : [];
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834587
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это же упрощенный пример.
В реальном массиве значения сложные (другие массивы, в том числе и вложенные).
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834607
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так и давайте свой "сложный массив"
я практически уверен, что элементарно через foreach порешать

зы: шо это?
Alibek B.$a = $a[0];
return $a;
Код: php
1.
return $a[0];
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834622
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через foreach не интересует.
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834639
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
array_pop/shift?
first вроде есть еще.
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834640
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834643
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в этом направлении я не думал.
По идее мне даже reset не нужен, current должен вернуть первый элемент.
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834646
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, reset отлично работает, в несколько раз быстрее, чем array_values.
current по идее должен быть чуть быстрее reset, но в замерах разницы я не заметил, а с reset надежнее.
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834656
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите еще, возможны ли у меня проблемы с использованием list?
Сейчас у меня есть такой фрагмент кода:
Код: php
1.
2.
3.
4.
5.
$a = array_pad(preg_split('/^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(\.(\d+))?((\+|\-)(\d\d):?(\d\d)?)?$/', $dt, -1, PREG_SPLIT_DELIM_CAPTURE), 13, null);
$y = next($a); $m = next($a); $d = next($a);
$h = next($a); $n = next($a); $s = next($a);
next($a); $u = next($a);
$tz = next($a); $zz = next($a); $zh = next($a); $zm = next($a);


(здесь array_pad просто для того, чтобы в пропущенных переменных оказалось пустое значение, а не false)
Код работает нормально, но мне хотелось бы его сократить, заменив в первой строке $a на list($z,$y,$m,$d,$h,$n,$s,$z,$u,$tz,$zz,$zh,$zm).
В принципе такая замена работает нормально, но меня смущает то, что порядок присваивания в разных версиях PHP отличается.
Можно ли использовать list, но получить предсказуемое поведение?
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834660
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Код: php
1.
print_r( date_parse_from_format(\DateTime::ISO8601, $dt) );
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834668
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы обфускатор пишите? Скажите что это так.
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39834718
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скорее всего тут велосипед с квадратными колёсами
или банальное незнание функций
...
Рейтинг: 0 / 0
PHP: Как обратиться к единственному элементу массива?
    #39847998
nets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
полудухскорее всего тут велосипед с квадратными колёсами
или банальное незнание функций
Иногда так бывает, что даже опытные разработчики изобретают велосипеды)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Как обратиться к единственному элементу массива?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]