У меня странная проблема. У меня есть файл CSV, который содержит значения, разделенные запятыми, которые мне нужно загрузить, а затем получить вложенный массив значений на основе следующих 3 условий:
- Массив сначала l oop через все значения и получить первые 4 уникальных персонажа. (Коды)
- Сопоставьте значения каждого столбца с числом столбцов в каждой строке и укажите количество строк, соответствующее 4-значным кодам. (Single_Devices для одного столбца и Dual, Triple и Quad для соответствующего количества столбцов)
- Сопоставьте значения каждого столбца с кодом и перечислите все столбцы под устройствами. (Числа)
CSV-файл
123429000000000
123429000000001
123429000000010,123429000000011
123429000000040,123429000000041
Что я желаю;
Array
(
[Code] => 1234
(
[single_devices] => 2
(
[0] => Array
(
[0] => 123429000000000
)
[1] => Array
(
[0] => 123429000000001
)
)
[dual_devices] => 2
(
[0] => Array
(
[0] => 123429000000010
[1] => 123429000000011
)
[1] => Array
(
[0] => 123429000000040
[1] => 123429000000041
)
)
)
)
Возможно ли это? Я могу управлять JSON преобразованными данными или объектом или просто ассоциативным вложенным массивом.
Редактировать: Это код, который я написал, для которого показывались только значения, а не индексы, как я хотел.
// Get all numbers in array
for ($j = 0; $j < count($csv_file[$i]); $j++){
$numbers[] = $csv_file[$i][$j];
}
// Get codes from numbers
for ($i = 0; $i < count($csv_file); $i++){
for ($j = 0; $j < count($csv_file[$i]); $j++){
$codes[] = substr($csv_file[$i][$j], 0, 4);
}
}
// Get unique codes from codes array
$codes = array_unique($codes);
// Get numbers and sort them codes and device count wise.
for ($i = 0; $i < count($csv_file); $i++){
for ($j = 0; $j < count($csv_file[$i]); $j++){
$q = count($csv_file[$i]); // set device count based on column count
if (count($csv_file[$i]) == $q){ // if device count is equal to column count
foreach ($codes as $code){ // loop through unique codes
if ($code == substr($csv_file[$i][$j], 0, 4)){ // if number's first 4 char matches code
// create array with code and then device count and add numbers
$devices[$code][$q.'_device_numbers'][$i][$j] = preg_replace('/\s+/', '', $csv_file[$i][$j]);
}
}
}
}
}
Это то, что я получаю из приведенного выше кода.
Array
(
[1234] => Array
(
[1_sim_imeis] => Array
(
[0] => Array
(
[0] => 123429000000000
)
[1] => Array
(
[0] => 123429000000001
)
)
[2_sim_imeis] => Array
(
[2] => Array
(
[0] => 123429000000010
[1] => 123429000000011
)
[3] => Array
(
[0] => 123429000000040
[1] => 123429000000041
)
)
)
)