Разбить массив строк на части - PullRequest
1 голос
/ 15 июля 2010

пусть говорят, что у меня есть массив, который хранит вот так.

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
)

Есть идеи?Спасибо заранее

Ответы [ 5 ]

5 голосов
/ 15 июля 2010

команда взрыва:

explode(';', $array);

Затем вам нужно будет добавить ';' до конца каждой строки.

2 голосов
/ 15 июля 2010

Пример

foreach($array as $item) {
   $mynewarray = explode(";",$item);
   foreach($mynewarray as $newitem) {
        $finalarray[] = $newitem.";";
   }
   //array is ready
}
1 голос
/ 15 июля 2010
$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 пустая запись, которую вы можете удалить.

0 голосов
/ 15 июля 2010

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

$a = "";

        foreach($array as $value) {
                flush();
                $a .= explode(";",$value);
        }
0 голосов
/ 15 июля 2010

Я бы лично использовал 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;

Редактировать: Не добавляйте точку с запятой в каждую строку:

$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] => ;
)
...