За последние 24 часа нас посетили 17547 программистов и 1653 робота. Сейчас ищут 950 программистов ...

очень нужна помощь

Тема в разделе "PHP для новичков", создана пользователем bookin, 16 ноя 2009.

  1. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    есть код :


    <html>

    <head>
    <title></title>
    </head>

    <body>

    PHP:
    1. <?php
    2.  
    3.  
    4.  
    5. ##############################################################################################
    6. ###################          функция разбития строк         ##################################
    7. ##############################################################################################
    8. function ar_delete_item($ar, $pos) {
    9.    return array_merge($pos ? array_slice($ar, 0, $pos) : array(), array_slice($ar, $pos + 1));
    10.  }
    11.  
    12. function slash_split($pattern, $str) {
    13.  $ar = split($pattern, $str);
    14.  for($i = 0; $i < count($ar);) {
    15.    $ar[$i] = str_replace("\\\\", $pattern, $ar[$i]);
    16.    $len = strlen($ar[$i]);
    17.    $t = $len && $ar[$i][$len - 1] === "\\";
    18.    $ar[$i] = str_replace($pattern, "\\", substr($ar[$i], 0, $len - $t)).($t ? $pattern : "");
    19.    if($i && substr($ar[$i-1], -1) === $pattern) {
    20.      $ar[$i-1] .= $ar[$i];
    21.      $ar = ar_delete_item($ar, $i);
    22.    } else $i++;
    23.  }
    24.  return $ar;
    25. }
    26. #################################################################################################
    27.  
    28. $m=fopen("news1.txt","w");
    29. $str_array=array();
    30.  
    31. $f=fopen("C:\web5\apache\modules\kiev_export.csv","r");
    32. while(($data=fgetcsv($f,1000,";")) !== FALSE)
    33. {
    34. $t=$data[2];
    35. $num=count($data);
    36.  
    37. $a[]= str_word_count($data[2],1);  //разбивает строчку на слова
    38. $ar[] = slash_split(" ", $t);
    39.  
    40. }
    41.  
    42. for($i=0;$i<count($ar);$i++)
    43. {
    44.      for($tre=0;$tre<count($ar);$tre++)
    45.      {    
    46.           $wert[]=$ar[$i][$tre];
    47.      }
    48. }
    49.  
    50. echo"<pre>" ;
    51.  
    52. print_r($wert);
    53. print_r($wert);
    54. echo"</pre>" ;
    55.  
    56.  
    57. fclose($f);
    58. fclose($m);
    59.  
    60. ?>
    </body>

    </html>[/html]







    при перегоне из многомерного массива($ar) в одномерный($wert), в одномерный массив заносится очень много пустых значений примерно так:

    array{
    текст
    текст
    текст
    пропуск
    пропуск
    ......
    пропуск
    текст
    текст
    пропуск
    .....
    и т.д.
    }

    в чем ошибка, плз подскажите
     
  2. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    ни у кого нету никаких мыслей, ПОМОГИТЕ очень нужно, уже мозг закипает (((((
     
  3. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    попробуйте в месте, где у вас заносятся данные в массив, поставить вывод дополнительной информации - какие переменные чему равны, что возвращают функции, что подается на вход функций. и вы увидите разницу между данными с текстом и данными с пропусками. когда увидите разницу, можете попробовать найти причину этого и внести изменения в алгоритм.
     
  4. Amatory999

    Amatory999 Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    93
    Симпатии:
    0
    Вопервых так как нумерация в массиве начинается с 0 то в цикле мы должны идти от 0 до count($ar) - 1
    Вовторых второй цикл будет идти по томуже массиву $ar. Смысл? count($ar) = count($ar[0]..$ar[n])? Если нет тогда попробуйте так:
    for($i=0;$i<count($ar)-1;$i++)
    {
    for($tre=0;$tre<count($ar[$i])-1;$tre++)
    {
    $wert[]=$ar[$i][$tre];
    }
    }
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Убрать все пустые значения:
    PHP:
    1. foreach ($array as $k=>$v)
    2. {
    3.      if (empty($v))
    4.      {
    5.           unset($array[$k]);
    6.      }
    7. }
    xD
     
  6. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    всем спасиб, особенно [vs], у меня есть еще один вопросик как убрать дублирующиеся строки без учета регистра??! лажу по этому поводу уже 3-и сутки и все никак не могу найти плиз помогите