разделение массива в заданной строке на две части, вставка другой строки и соединение их - PullRequest
1 голос
/ 26 октября 2009

У меня есть массив, заполненный вложенными массивами. Мне нужно разбить первый массив по заданному номеру строки, а затем вставить новую строку, а затем объединить их все обратно в их исходную структуру.

Это то, с чем я сейчас работаю

$csvpre = explode("###", $data);

$i = 0;
$bgc = 0;

    foreach ( $csvpre AS $key => $value){
        $info = explode("%%", $value);
        $i++;
        if($i == "1"){
            echo "<tr bgcolor=#efefef><td></td>";
                foreach ( $info as $key => $value ){ echo "<td>$value</td>"; }
            echo "</tr>";

        } else {

            if($bgc&1) { $bgcgo = "bgcolor=\"#b9b9b9\"" ;} else { $bgcgo = "bgcolor=\"#d6d6d6\""; }
            echo "<tr $bgcgo><td></td>";
            echo "<td><input type=button value=\"clone #$i\"></td>";
            $j = 0;
                foreach ( $info as $key => $value ){ 
                    $j++;

                        if($j != 8){
                            echo "<td>$value</td>";
                        }else{
                            echo "<td><textarea name=ddesc[]>$value</textarea></td>";
                        }
                }
            echo "</tr>";
            $bgc++;
        }       
    }

Мне нужно создать функцию, которая примет значение для $ i, скажем, 10, и в этой строке разделит массив на две части: $ arraya и $ arrayb. Затем мне нужно объединить их вместе, включая новую строку ...

псевдокод

$ startarray = array (Line0, Line1, Line2, Line3, Line4); $ splitline = 2; $ arraya = splitup ($ startarray, $ splitline); $ arrayb = splitdown ($ startarray, $ splitline);

ArrayA будет состоять из Line0, Line1, Line2. И ArrayB будет состоять из Line3, Line4. Затем мы запускаем магическую функцию.

$newline = "Line2.5";
$newarray = somefunction($arraya, $newline, $arrayb);

И тогда $ newarray будет выглядеть как

Line0, Line1, Line2, Line2.5, Line3, Line4

1 Ответ

2 голосов
/ 26 октября 2009

Если я правильно понимаю ваш вопрос, array_splice() может сделать все это за один раз:

$array = array('Line0', 'Line1', 'Line2', 'Line3', 'Line4');
array_splice($array, 3, 0, 'Line2.5');
print_r($array);

который выводит:

Array
(
    [0] => Line0
    [1] => Line1
    [2] => Line2
    [3] => Line2.5
    [4] => Line3
    [5] => Line4
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...