2010-07-15 3 views
1

let said У меня есть массив, который хранится вот так.Разделите массив строк на куски

Array ( 
    [0] => width: 650px;border: 1px solid #000; 
    [1] => width: 100%;background: white; 
    [2] => width: 100%;background: black; 
) 

Как я могу сделать массив [0], разделенный на кусок, разделяя «;»? Затем я хочу снова сохранить их в массиве или отобразить их. Как я должен это делать?

Array(
    [0] => width: 650px 
    [1] => border: 1px solid #000 
) 

Есть идеи? Спасибо в пожилом

ответ

0

Я бы лично использовать preg_split, чтобы избавиться от этого дополнительного элемента массива, которое произойдет из конечной точкой с запятой ...

$newarray = array(); 
foreach ($array as $i => $styles): 
    // Split the statement by any semicolons, no empty values in the array 
    $styles = preg_split("/;/", $styles, -1, PREG_SPLIT_NO_EMPTY); 
    // Add the semicolon back onto each part 
    foreach ($styles as $j => $style) $styles[$j] .= ";"; 
    // Store those styles in a new array 
    $newarray[$i] = $styles; 
endforeach; 

Edit: Дон» t добавить точку с запятой к каждой строке:

$newarray = array(); 
foreach ($array as $i => $styles): 
    // Split the statement by any semicolons, no empty values in the array 
    $newarray[$i] = preg_split("/;/", $styles, -1, PREG_SPLIT_NO_EMPTY); 
endforeach; 

Какой должна вывести:

Array(
    [0] => width: 650px; 
    [1] => border: 1px solid #000; 
) 

В отличие от взрываются, который должен вывести:

Array(
    [0] => width: 650px; 
    [1] => border: 1px solid #000; 
    [2] => ; 
) 
+0

ops, извините, что, если я хочу полностью игнорировать ";"? – arkchong

+0

Если вы не хотите, чтобы точка с запятой просто удалила этот второй оператор foreach внутри. – animuson

5

разнесения Команда:

explode(';', $array); 

Затем вы должны добавить символ «;» до конца каждой строки.

2

Пример

foreach($array as $item) { 
    $mynewarray = explode(";",$item); 
    foreach($mynewarray as $newitem) { 
     $finalarray[] = $newitem.";"; 
    } 
    //array is ready 
} 
0

Попробуйте это:

$a = ""; 

     foreach($array as $value) { 
       flush(); 
       $a .= explode(";",$value); 
     } 
+1

Какова цель этого флеша? Вы не очищаете туалет, когда в нем нет ничего ... – animuson

1
$arr = array('width: 650px;border: 1px solid #000;','width: 100%;background: white;','width: 100%;background: black;'); 

$arr = explode(';',implode(';',$arr)); 
for($i=0; $i < sizeof($arr)-1; $i++) { $arr[$i] .= ';'; } 

print_r($arr); 

Напечатает все с запятой линии, как отдельные объекты в массиве ... +1 пустая запись, которую вы можете удалить.

Смежные вопросы