Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP, работа с массивами / 5 сообщений из 5, страница 1 из 1
08.09.2016, 22:30
    #39306195
Pinkerton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, работа с массивами
Приветствую, форумчане.

Помогите с PHP массивами: есть исходный:
Код: php
1.
2.
3.
4.
5.
6.
7.
$arFiles array (size=6)
  0 => string '101858 - xxxxx.jpg' (length=64)
  1 => string '1233443zzzzzzzz8674zz.jpg' (length=62)
  2 => string '210 - sssss.jpg' (length=61)
  3 => string '686117 - qwe.png' (length=83)
  4 => string '713531 - asd.jpg' (length=125)
  5 => string 'qweefsds' (length=74)


регекспом определяем лидирующие цифры и набиваем ими другой массив:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$arIDs=array();
foreach ($arFiles as $key=>$value) {
    $id = preg_match('/^\d{3,}/', $value, $matches[$key]); 
    if ($id) {
        $arIDs[]=$matches[$key][0];
    }
}
var_dump($arIDs);


Получаем
Код: php
1.
2.
3.
4.
5.
6.
$arIDs array (size=5)
  0 => string '101858' (length=6)
  1 => string '123443' (length=6)
  2 => string '210' (length=3)
  3 => string '686117' (length=6)
  4 => string '713531' (length=6)


Результирующий массив заполняется правильно, но мне кажется код выглядит как-то... из задницы что-ли. Наверняка можно причесать более правильно, кто подскажет?
ЗЫЖ Сильно не пинайте, в PHP пока не силен.
...
Рейтинг: 0 / 0
08.09.2016, 23:33
    #39306209
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, работа с массивами
...
Рейтинг: 0 / 0
08.09.2016, 23:46
    #39306214
Pinkerton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, работа с массивами
vkle,

Ну, так-то оно да, красивше, но мне больше интересно преобразование данных из $matches в $arIDs. Как-то оно неказисто выглядит.
...
Рейтинг: 0 / 0
09.09.2016, 00:01
    #39306224
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, работа с массивами
Pinkerton,

Ну дык и предлагаю же обойтись без регулярок и $matches вовсе. Типа так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?php
$a = array(
  0 =>  '101858 - xxxxx.jpg',
  1 =>  '1233443zzzzzzzz8674zz.jpg',
  2 =>  '210 - sssss.jpg',
  3 =>  '686117 - qwe.png',
  4 =>  '713531 - asd.jpg',
  5 =>  'qweefsds',
);

$b = array();
foreach($a as $e) if(intval($e)) $b[] = intval($e);


Только тип данных в выходном массиве будет целое, а не строка.
...
Рейтинг: 0 / 0
09.09.2016, 00:09
    #39306226
Pinkerton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, работа с массивами
vkle,
да, действительно. Спасибо.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP, работа с массивами / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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