есть код : <html> <head> <title></title> </head> <body> PHP: <?php ############################################################################################## ################### функция разбития строк ################################## ############################################################################################## function ar_delete_item($ar, $pos) { return array_merge($pos ? array_slice($ar, 0, $pos) : array(), array_slice($ar, $pos + 1)); } function slash_split($pattern, $str) { $ar = split($pattern, $str); for($i = 0; $i < count($ar);) { $ar[$i] = str_replace("\\\\", $pattern, $ar[$i]); $len = strlen($ar[$i]); $t = $len && $ar[$i][$len - 1] === "\\"; $ar[$i] = str_replace($pattern, "\\", substr($ar[$i], 0, $len - $t)).($t ? $pattern : ""); if($i && substr($ar[$i-1], -1) === $pattern) { $ar[$i-1] .= $ar[$i]; $ar = ar_delete_item($ar, $i); } else $i++; } return $ar; } ################################################################################################# $m=fopen("news1.txt","w"); $str_array=array(); $f=fopen("C:\web5\apache\modules\kiev_export.csv","r"); while(($data=fgetcsv($f,1000,";")) !== FALSE) { $t=$data[2]; $num=count($data); $a[]= str_word_count($data[2],1); //разбивает строчку на слова $ar[] = slash_split(" ", $t); } for($i=0;$i<count($ar);$i++) { for($tre=0;$tre<count($ar);$tre++) { $wert[]=$ar[$i][$tre]; } } echo"<pre>" ; print_r($wert); print_r($wert); echo"</pre>" ; fclose($f); fclose($m); ?> </body> </html>[/html] при перегоне из многомерного массива($ar) в одномерный($wert), в одномерный массив заносится очень много пустых значений примерно так: array{ текст текст текст пропуск пропуск ...... пропуск текст текст пропуск ..... и т.д. } в чем ошибка, плз подскажите
попробуйте в месте, где у вас заносятся данные в массив, поставить вывод дополнительной информации - какие переменные чему равны, что возвращают функции, что подается на вход функций. и вы увидите разницу между данными с текстом и данными с пропусками. когда увидите разницу, можете попробовать найти причину этого и внести изменения в алгоритм.
Вопервых так как нумерация в массиве начинается с 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]; } }
Убрать все пустые значения: PHP: foreach ($array as $k=>$v) { if (empty($v)) { unset($array[$k]); } } xD
всем спасиб, особенно [vs], у меня есть еще один вопросик как убрать дублирующиеся строки без учета регистра??! лажу по этому поводу уже 3-и сутки и все никак не могу найти плиз помогите