Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: array_walk
 
 автор: serjinio   (06.10.2008 в 11:07)   письмо автору
 
 

Не могу запустить функцию надо в массиве убрать слова меньше 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...

  Ответить  
 
 автор: Лена   (06.10.2008 в 13:49)   письмо автору
 
   для: serjinio   (06.10.2008 в 11:07)
 

Вначале нужно определять функцию и только потом применять ее в array_walk()
Если хотите делать какой-то вывод, то я бы это делала внутри функции: если слово меньше 2 символов, делаете такой-то вывод или вообще ничего не выводите.

  Ответить  
 
 автор: serjinio   (06.10.2008 в 15:56)   письмо автору
 
   для: Лена   (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;
выдает единицу и что это значить???

  Ответить  
 
 автор: Trianon   (06.10.2008 в 16:13)   письмо автору
 
   для: serjinio   (06.10.2008 в 15:56)
 

,но я никак не пойму почему
>echo '<br>del --> '.$del;
>выдает единицу и что это значить???

Может быть стоит прочесть в мануале о том, что за значение возвращает функция array_walk()?

  Ответить  
 
 автор: Лена   (06.10.2008 в 16:44)   письмо автору
 
   для: serjinio   (06.10.2008 в 15:56)
 

Из мануала:
Функция array_walk() возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Это вам ни о чем не говорит?

  Ответить  
 
 автор: Лена   (06.10.2008 в 16:46)   письмо автору
 
   для: serjinio   (06.10.2008 в 15:56)
 

про функции еще раз нужно вам читать

  Ответить  
 
 автор: serjinio   (06.10.2008 в 17:24)   письмо автору
 
   для: Лена   (06.10.2008 в 16:46)
 

С 1 разобрался, теперь появился вопрос такого плана... после обработки образуется массив
Array
(
    [0] => как
    [1] => 
    [2] => 
    [3] => 
    [4] => введите
    [5] => 
    [6] => исключением

как ,или более точно , чем...удалить ключи с пустыми значениями...заранее спасибо за помощь

  Ответить  
 
 автор: Drago   (06.10.2008 в 17:44)   письмо автору
 
   для: serjinio   (06.10.2008 в 17:24)
 

>как ,или более точно , чем...удалить ключи с пустыми значениями...
А зачем вы их создавали? Может проще сразу удалять, неподходящие вам, элементы в массиве?

  Ответить  
 
 автор: serjinio   (06.10.2008 в 19:23)   письмо автору
 
   для: Drago   (06.10.2008 в 17:44)
 

Если попробовать использовать вышеприведенный пример,то Вы увидите кто это создал ключи с пустыми значениями ,если у Вас есть предложение, как это избежать, то будьте добры поделитесь им.
Заранее спасибо

  Ответить  
 
 автор: Drago   (06.10.2008 в 19:41)   письмо автору
 
   для: serjinio   (06.10.2008 в 19:23)
 

Я и так увидел кто создал пустые элементы в массиве, поэтому и спросил, зачем Вы это сделали в своей функциии. :) Как этого избежать, я кажется тоже сказал. Сразу удалять.
Вот Вам для наглядности:

<?
array_walk
($t,"ta");
function 
ta (&$item$key)
{
global 
$t;
echo 
'<br>item --> '.$item;
if (
strlen($item)<or empty($item))
    unset(
$t[$key]);
}
?>

  Ответить  
 
 автор: serjinio   (06.10.2008 в 20:35)   письмо автору
 
   для: 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>';

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования