У меня есть массив $rows
где каждый элемент представляет собой строку из 15 значений с разделителями табуляции. Я хочу взорвать $rows
в 2D-массив $rowData
где каждая строка является элементом массива, и каждое значение с разделителями табуляции назначается другому элементу массива. Я пробовал эти два метода без успеха. Я знаю, что первая имеет ошибку кодирования, но я не знаю, как ее исправить. Любая помощь будет потрясающей.
for ($i=0; $i<count($rows); $i++){ for ($j=0; $j<15; $j++){ $rowData = array([$i] => array (explode(" ", $rows[$j]))); } } foreach ($rows as $value){ $rowData = array( array (explode(" ", $rows[$value]))); }
$rowData = array(); foreach($rows as $value) { $rowData[] = explode("\t", $value); }
for ($j=0; $j<15; $j++) { $rowData[$j] = explode("\t", $rows[$j]); }
Чтобы развернуть: проблема со следующим кодом:
$rowData = array([$i] => array (explode(" ", $rows[$j])));
что вы, похоже, не знаете, что означают разные вещи, которые вы написали.
Вызов массива () возвращает новый массив с указанными элементами. Итак, array (explode(" ", $rows[$j]))
дает массив с одним элементом, а именно массив, возвращаемый методом explode()
. И вы завершаете это в другом вызове array()
, указав переменную цикла $i
в качестве ключа, соответствующего этому элементу. Кроме того, вы используете символ присваивания =
, что означает, что каждый раз, когда вы проходите цикл, $rowData
полностью перезаписывается, вы хотели бы добавить к нему новые элементы, не избавившись от старых.