Используйте каждую подстроку с разделителями из столбца двухмерного массива и создавайте сгруппированные подмассивы.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Используйте каждую подстроку с разделителями из столбца двухмерного массива и создавайте сгруппированные подмассивы.

Сообщение Anonymous »

Да, на этот вопрос отвечали бесчисленное количество раз, используя разные методы, в большинстве случаев это работает, но не в моем случае, позвольте мне объяснить.


Я создаю массив из CSV-файла, это было самое простое, но самое сложное заключается в том, что мне нужно создать еще один массив из первого массива, группируя результаты на основе одного значения ключа. , проблема в том, что это значение не является ни массивом, ни простой строкой...

Это образец из массива CSV-файла

Код: Выделить всё

[0] => Array
(
[key_1] => FOO
[cats] => /30/
[key_2] => FTU-1
)
[1] => Array
(
[key_1] => FOO
[cats] => /30/
[key_2] => FTU-2
)
[2] => Array
(
[key_1] => FOO
[cats] => /30/10/
[key_2] => FTU-3
)
[3] => Array
(
[key_1] => FOO
[cats] => /15/
[key_2] => FTU-4
)
[4] => Array
(
[key_1] => FOO
[cats] => /10/
[key_2] => FTU-5
)
[0] => Array
(
[key_1] => FOO
[cats] => /15/
[key_2] => FTU-6
)
Окончательный массив должен выглядеть следующим образом на основе кошек столбца:

Код: Выделить всё

[30] => Array
(
[0] => Array
(
[key_1] => FOO
[cats] => /30/
[key_2] => FTU-1
)
[1] => Array
(
[key_1] => FOO
[cats] => /30/
[key_2] => FTU-2
)
[1] => Array
(
[key_1] => FOO
[cats] => /30/10/
[key_2] => FTU-3
)
[15] => Array
(
[0] => Array
(
[key_1] => FOO
[cats] => /15/
[key_2] => FTU-4
)
[1] => Array
(
[key_1] => FOO
[cats] => /15/
[key_2] => FTU-6
)
[10] => Array
(
[0] => Array
(
[key_1] => FOO
[cats] => /30/10/
[key_2] => FTU-3
)
[1] => Array
(
[key_1] => FOO
[cats] => /10/
[key_2] => FTU-5
)
Я искал этот ответ, который наиболее близок к тому, что мне нужно, но не сработал, поэтому я прошу помощи.

Обновление: кажется, я только что решил эту проблему...


Код: Выделить всё

foreach($firstarr as $k => $v) {
$cats = array_filter(explode('/', $v['cats']));
foreach($cats as $ks=>$vs) {
if(stripos($v['cats'], $vs)){
$pp[$vs][] = $v;
}
}
}
хорошо выглядит.

Подробнее здесь: https://stackoverflow.com/questions/372 ... ouped-suba
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»