|
|
|
| Не могу запустить функцию надо в массиве убрать слова меньше 2 символов
<?php
$t=explode (" ", trim($text));
$del = array_walk($t,"ta");
function ta (&$item, $key)
{
if (strlen($item) < 2) unset($item);
}
или
$del = array_walk($t,"ta");
function ta (&$item, $key)
{
if (strlen($item)<2) $item='';
}
|
на выходе дает 1... | |
|
|
|
|
|
|
|
для: serjinio
(06.10.2008 в 11:07)
| | Вначале нужно определять функцию и только потом применять ее в array_walk()
Если хотите делать какой-то вывод, то я бы это делала внутри функции: если слово меньше 2 символов, делаете такой-то вывод или вообще ничего не выводите. | |
|
|
|
|
|
|
|
для: Лена
(06.10.2008 в 13:49)
| | Лена,не понял что делаю неправильно мне не нужен как таковой вывод мне надо использовать array_walk() как промежуточный вариант для дальнейшей обработки если я делаю
<?
$del = array_walk($t,"ta");
function ta (&$item, $key)
{
echo '<br>item --> '.$item;
if (strlen($item)<2) $item='';
}
|
То вижу что, функция ta работает ,но не вижу чтобы работала сама функция array_walk() ...она тупо дает на выходе 1или я что-то не понимаю, просто еще ни разу не пользовался этой функцией и хочу разобраться с ее работой...
Если вывожу массив обработанный этой функцией array_walk()
echo '<pre>';
print_r($t);
echo '</pre>';
|
то получаю то ,что нужно мне ,но я никак не пойму почему
echo '<br>del --> '.$del;
выдает единицу и что это значить??? | |
|
|
|
|
|
|
|
для: serjinio
(06.10.2008 в 15:56)
| | ,но я никак не пойму почему
>echo '<br>del --> '.$del;
>выдает единицу и что это значить???
Может быть стоит прочесть в мануале о том, что за значение возвращает функция array_walk()? | |
|
|
|
|
|
|
|
для: serjinio
(06.10.2008 в 15:56)
| | Из мануала:
Функция array_walk() возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Это вам ни о чем не говорит? | |
|
|
|
|
|
|
|
для: serjinio
(06.10.2008 в 15:56)
| | про функции еще раз нужно вам читать | |
|
|
|
|
|
|
|
для: Лена
(06.10.2008 в 16:46)
| | С 1 разобрался, теперь появился вопрос такого плана... после обработки образуется массив
Array
(
[0] => как
[1] =>
[2] =>
[3] =>
[4] => введите
[5] =>
[6] => исключением
|
как ,или более точно , чем...удалить ключи с пустыми значениями...заранее спасибо за помощь | |
|
|
|
|
|
|
|
для: serjinio
(06.10.2008 в 17:24)
| | >как ,или более точно , чем...удалить ключи с пустыми значениями...
А зачем вы их создавали? Может проще сразу удалять, неподходящие вам, элементы в массиве? | |
|
|
|
|
|
|
|
для: Drago
(06.10.2008 в 17:44)
| | Если попробовать использовать вышеприведенный пример,то Вы увидите кто это создал ключи с пустыми значениями ,если у Вас есть предложение, как это избежать, то будьте добры поделитесь им.
Заранее спасибо | |
|
|
|
|
|
|
|
для: serjinio
(06.10.2008 в 19:23)
| | Я и так увидел кто создал пустые элементы в массиве, поэтому и спросил, зачем Вы это сделали в своей функциии. :) Как этого избежать, я кажется тоже сказал. Сразу удалять.
Вот Вам для наглядности:
<?
array_walk($t,"ta");
function ta (&$item, $key)
{
global $t;
echo '<br>item --> '.$item;
if (strlen($item)<2 or empty($item))
unset($t[$key]);
}
?>
|
| |
|
|
|
|
|
|
|
для: Drago
(06.10.2008 в 19:41)
| | Drago ,прекрасное решение ,я экспериментировал с unset($t[$key]);
конечно выдавало ошибку ....
но не сообразил, что $t надо внутри функции объявить глобальной ..Всем спасибо за помощь.
PS я конечно делал попроще ,но просто захотелось разобраться с этой функцией..array_walk()..
<?
$k_w = preg_match_all('/([a-zA-Zа-яА-Я]{2,})/',$text, $out_2);
echo '<br>Слов больше 2-х знаков -->'.$k_w;
echo '<pre>';
print_r($out_2[0]);
echo '</pre>';
|
| |
|
|
|