[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Убрать побелы и пустые значения из массива
Страницы: 1, 2
GET
array_filter: 1.14

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
chee
впринципе задача рационально решается только с помощию array_filter, остальное все велосипеды, как ни смотри laugh.gif

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
GET
FatCat
А чем у меня плохо?
foreach($array as $i=>$val)if(trim($val)=='')unset($array[$i]);


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
chee
ABC, зато array_filter для этого предназначена. да и бенчмарки какие то странные у тебя


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
GET
Ладно... laugh.gif больше не могу видеть все эти велосипеды.

Свернутый текст
user posted image


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
chee
ABC, хотя скорость у array_filter до 5.6 вообще ахтунг

http://3v4l.org/3OFTM/perf#tabs
http://3v4l.org/KEnZN/perf#tabs

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
FatCat
Цитата (ABC @ 26.11.2014 - 19:16)
чем у меня плохо?

Цитата (MailRes @ 26.11.2014 - 18:10)
$a[0]=" помидорка";
Пробел останется.


_____________
Бесплатному сыру в дырки не заглядывают...
MailRes
chee, ваш пример не пробовал, но по ссылке, если правильно понял, приведён результат выполнения, но там присутствуют лишние пробелы.
andrey888
Убрать пробелы и пустые значения

foreach($a as $k=>$v){
$a[$k] = trim($v);
if($a[$k] == '') unset($a[$k]);
}


_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
chee
MailRes, я прочитал задачу там написано так, если смотреть на код который предоставил ТС, то написано по другому. Что поделать десу.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
S.Chushkin
Цитата (MailRes @ 26.11.2014 - 19:10)
Как рационально решить задачу по избавлению от лишних пробелов и "пустых" значений массива?

У меня есть такое решение, но наверняка есть проще:

Зависит от того, что Вы считаете "рациональным". ;)
Если для Вас "рационально" = "проще", то вариант
    $array =  array_filter(array_map('trim', $source), function ($v) { return ($v !== ''); })

самый простой. Но он медленнее алгоритма с foreach() в ~3.5 раза.

Вариант:
    $array = array();
foreach($source as $k => $v) {
if($v !== '') {
$v = trim($v);
if($v !== '') {
$array[$k] = $v;
}
}
}


самый быстрый. (можно вынести в функцию - скорость уменьшится на ~40%)
На моём компьютере этот вариант даёт ~1.3 секунды на 1 млн. итераций (в цикле) для PHP 5.3.
Тест такой:
$source = array(" помидорка","","огурец "," апельсин "," ");
$t = microtime(1);
for($i=0;$i<1000000;$i++) {
$array = array();
foreach($source as $k => $v) {
if($v !== '') {
$v = trim($v);
if($v !== '') {
$array[$k] = $v;
}
}
}
}

var_dump(microtime(1) - $t, $array);


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.