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

Форум PHP

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

 

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

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

тема: Разбить массив на части
 
 автор: ZeeG   (08.02.2008 в 15:38)   письмо автору
 
 

Всем привет.
Подскажите как можно разбить массив, созданный из CSV на части, по двум пустым элементам массива.

Array
(
    [0] => value;value;value
    [1] => value;value;value
   
    [2] => 
    [3] => 

    [4] => value;value;value
    [5] => value;value;value
    [6] => value;value;value
    [7] => value;value;value
...
)

На выходе должно получиться два или больше массивов

Ничего придумать не могу.
Подскажите
Спасибо

   
 
 автор: Shiva   (08.02.2008 в 16:47)   письмо автору
 
   для: ZeeG   (08.02.2008 в 15:38)
 

<?php
$result    
= array(array());
$flag    false;
foreach(
$array as $row)
{
    if(!
$row)
    {
        if(
$flag)
        {
            
$result[] = array();
        }
        
$flag = !$flag;
    }
    else 
    {
        
$result[count($result) - 1][] = $row;
    }
}
?>

На выходе - многомерный массив $result, содержащий в качестве элементов блоки первого, которые были разделены двумя пустыми элементами.

   
 
 автор: ZeeG   (08.02.2008 в 17:15)   письмо автору
 
   для: Shiva   (08.02.2008 в 16:47)
 

Спасибо за помощь, но у меня тут ошибка вылезла

Fatal error: [] operator not supported for strings in z:\home\localhost\www\upload\test.php on line 36
$result[count($result)-1][] = $row;

Чтобы это могло быть?

   
 
 автор: Shiva   (08.02.2008 в 17:18)   письмо автору
 
   для: ZeeG   (08.02.2008 в 17:15)
 

Последним элементом $result оказалась строка. Прикрепите test.php целиком.

   
 
 автор: ZeeG   (08.02.2008 в 17:35)   письмо автору
 
   для: Shiva   (08.02.2008 в 17:18)
 

еще бы хоть примерно знать куда прикрепить.
Я загружаю file.CSV

    $result =  $array;// array(array()); // ВОТ ЭТО МЕСТО НЕ ПОНЯТНО

   
 
 автор: Shiva   (08.02.2008 в 17:49)   письмо автору
 
   для: ZeeG   (08.02.2008 в 17:35)
 

$result = $array;// array(array()); // ВОТ ЭТО МЕСТО НЕ ПОНЯТНО

Так из-за этого у вас ошибка и возникла. Я здесь создаю массив $result, куда буду складывать результаты. И добавляю пустой же в качестве первого элемента для первого блока (до всяких пустых строк).
А вы сделали в $result копию одномерного массива $array. Естественно, это не работает.

ps. Извините, но вы всегда произвольным образом заменяете те строчки кода, что вам непонятны?

   
 
 автор: ZeeG   (08.02.2008 в 18:15)   письмо автору
 
   для: Shiva   (08.02.2008 в 17:49)
 

деление не происходит.
Вот что получается

Array
(
 [0] => Array
 (    
   [0] => value;value;value
    [1] => value;value;value
    [2] => 
    [3] => 
    [4] => value;value;value
    [5] => value;value;value
    [6] => value;value;value
    [7] => value;value;value
...
)


Извините если что, я просто решил попробывать, что получилось бы заменив часть Вашего кода. Но Вы правы ч действительно не понимаю его.

   
 
 автор: Shiva   (08.02.2008 в 18:29)   письмо автору
 
   для: ZeeG   (08.02.2008 в 18:15)
 

У меня работает, при условии, что $array[2] и $array[3] - пустые строки. Что у вас в этих пустых элементах? Судя по всему, для них не действительно условие if(!$row).

Попробуйте поставить перед

if(!$row)
{

удаление пустых символов:

$row = trim($row);

   
 
 автор: ZeeG   (08.02.2008 в 18:41)   письмо автору
 
   для: Shiva   (08.02.2008 в 18:29)
 

Спасибо Вам большое за помощь и, что самое главное, за терпение!!!

   
Rambler's Top100
вверх

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