|
|
|
| Всем привет! Есть такая ф-ция array_slice с одномерным массивом понятно как работать, а как с многомерным, не совсем понятно. Вот мой многомерный массив, от него нужно отрезать с 0 по 9 позицию, или с 5 по 13, в общем чтоб можно было регулировать.
Array
(
[count] => 41
[result] => Array
(
[em_newart_id] => Array
(
[0] => 3373
[1] => 3557
[2] => 3634
[3] => 3346
[4] => 3624
[5] => 3337
[6] => 3317
[7] => 3386
[8] => 3290
[9] => 3360
[10] => 3426
[11] => 3294
[12] => 3303
[13] => 3370
[14] => 3436
[15] => 3484
[16] => 3427
[17] => 3630
[18] => 3342
[19] => 3351
[20] => 3463
[21] => 3454
[22] => 3433
[23] => 3523
[24] => 3353
[25] => 3311
[26] => 3461
[27] => 3521
[28] => 3514
[29] => 3507
[30] => 3349
[31] => 3183
[32] => 3369
[33] => 3571
[34] => 3431
[35] => 3469
[36] => 3493
[37] => 3459
[38] => 3390
[39] => 3293
[40] => 3508
)
)
)
|
После среза допустим с 0 по 3 должно быть так:
Array
(
[count] => 3
[result] => Array
(
[em_newart_id] => Array
(
[0] => 3373
[1] => 3557
[2] => 3634
)
)
)
|
| |
|
|
|
|
|
|
|
для: TetRiska
(29.07.2012 в 21:11)
| | Ну и как может функция интерпретировать ваши аргументы, понимая, чего вы у нее просите? Так не получится, не перебрав массива. Из последнего вложенного массива, вы можете получить только так, например:
<?
echo '<pre>';
$a = array(
'count' => 41,
'result'=> array(
'em_newart_id' => array(
3373,3557,3634,3346,
3624,3337,3317,3386)
)
);
print_r(array_slice(current(end($a)),0,3));
|
| |
|
|
|
|
|
|
|
для: confirm
(29.07.2012 в 21:32)
| | не совсем то
Array
(
[0] => 3370
[1] => 3463
[2] => 3337
)
|
мне нужно получить такой же массив многомерный, только с уменьшенным кол. элементов в интервале что я укажу | |
|
|
|
|
|
|
|
для: TetRiska
(29.07.2012 в 21:43)
| | А разве я написал, что это решение вашей задачи? Я написал, что так как вы хотите - прописал размер как 0, 3, а дура функция пусть разбирается чего вы от нее хотите, не получится. И чтобы понять, что вы от нее хотите нечто и от последнего вложения, то не указывая ключа, к нему можно обратиться так, как я и привел в примере. Если у вас массив сложный, и то, что вы привели, это всего лишь часть его, то без обхода такого массива не обойтись. | |
|
|
|
|
|
|
|
для: confirm
(29.07.2012 в 21:48)
| | обратится к нему можно было и проще, результат таков же:
print_r(array_slice($a['result']['em_newart_id'],0,3));
|
буду пробовать обход через foreach | |
|
|
|
|
|
|
|
для: TetRiska
(29.07.2012 в 21:52)
| | Ну вы же читайте о чем я пишу. Откуда мне знать, что вы работаете с кусочком? А если нет, и вы не знаете ключей? Вы либо опишите все от а до я, что это такой массив, и более ничего, тогда можно и ключами оперировать.
Если это все, что и есть, то что вам мешает ваши операнды интерпретировать перед передачей в функцию так, как вы этого желаете? Если 0, 3, это закономерность, и в 0, 7, такая же закономерность, то разве сложно из всего этого получить операнды для двух функций array_slice(), и обойтись без цикла? | |
|
|
|
|
|
|
|
для: confirm
(29.07.2012 в 21:59)
| | вот все решение задачи
$mass2['count'] = 3;
$mass2['result']['em_newart_id'] = array_slice($mass2['result']['em_newart_id'],0,3);
|
но, все равно спасибо | |
|
|
|
|
|
|
|
для: TetRiska
(30.07.2012 в 18:58)
| | Задавая задачи, описывайте данные и условия, а то оказывается, в последствии, что вопроса как такового и нет, то есть проблемы. | |
|
|
|