За последние 24 часа нас посетили 28053 программиста и 1815 роботов. Сейчас ищут 2173 программиста ...

Cрез массива

Тема в разделе "PHP для новичков", создана пользователем shalx, 23 ноя 2015.

  1. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Есть массив с элементами от A до Z ,
    как срезать от A до d если сколько там значении мы не знаем ?
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    пебебрать все элементы массива (foreach(), for())
    проверить каждый элемент на принадлежность нужному диапазону
    Все нужные элементы сохранить во второй массив
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    array_slice(), array_splice() ?
    или такой вариант вырезания по значению ключей:
    Код (PHP):
    1. <?php
    2.  
    3. $source = [
    4.  0 => 'A', 
    5.  1 => 'B', 
    6.  2 => 'C',
    7.  3 => 'D',
    8.  4 => 'E',
    9.  5 => 'F',
    10. ];
    11.  
    12. $scissors = [ 
    13.   2 => 0, 
    14.   3 => 0
    15. ];
    16.  
    17. var_export( array_intersect_key($source, $scissors) );
    18. /*
    19. Result: array (
    20.   2 => 'C',
    21.   3 => 'D',
    22. )
    23. */ 
     
  4. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    если алфавит это только пример, то неудачный, потому что мы знаем размер алфавита.
    и что мешает узнать размер массива и срезать до туда, до куда нам надо.
     
  5. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Да алфавит неудачный пример, на деле там даты типа 2015-11-23, источник json файл и пытаюсь сделать подобие выборки от - до . Понимаю что невозможно узнать размер среза заранее.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Теперь объясни "от и до" это по номерам по порядку или по значениям элементов?
    первое - array_slice() или фокус с intersect по ключам как я выше показал.
    второе - фильтрация через array_filter() с колбек-функцией.
     
  7. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Например от 2015-07-17 до 2015-09-25, однако там может быть повторений 2015-07-17,2015-07-17,2015-07-17 и упущений, тоесть в день может быть несколько записей но не каждый день, возможно ли срезать по периоду ?
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Возможно. Перестань ждать, почитай справку и попробуй сам, наконец: http://php.net/array_filter
    Ты можешь задать любое условие фильтрации.

    Добавлено спустя 3 минуты 4 секунды:
    Работая с датами, надо иметь в виду тип данных. Строка это не дата, это представление даты.
    Почитай: viewtopic.php?f=20&t=50838
     
  9. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Плохо объяснил, пользователь ввел непровельную дату но нужно же как то реагировать
    вот такой массив
    Код (PHP):
    1. (
    2. [0]=>2015-01-02
    3. [0]=>2015-05-03
    4. [0]=>2015-05-03
    5. [0]=>2020-01-01
    6. [0]=>2015-07-22
    7. [0]=>2015-01-02
    8. [0]=>2015-02-02
    9. ) 
    хотим вырезать от 2015-05-03 до 2015-01-02
    не приходит в голову любое условие

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  10. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    так вырезать каждый раз разное необходимо будет?

    Добавлено спустя 1 минуту 32 секунды:
    Добавлено спустя 2 минуты 2 секунды:
    и ещё, а массив что, вообще не отсортированный? или это пример? )
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не понятно по какому критерию определять что резать
     
  12. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Каждый раз разное , нет такой функции от значений х до значений y ?
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    shalx нужно чтобы даты были по возрастанию? и если там отклонение от этого условия, то выкинуть её?
     
  14. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Оказалось все очень просто
    Код (PHP):
    1. for($i=$ind1; $i <=$ind2; $i++){
    2. $fin[$i] = $arr[$i];} 
    3.  pre($fin);         
    4.     } 
    где $ind1 и $ind2 индексы значении

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  15. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    гениально.
     
  16. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Все правильно и потом найдём значения по индексу :)
    Есть проблема , у меня php3 и нет функции array_slice и array_search
    Как эмулировать array_search может знаете?
    плевать на отступы
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я так и не понял, по какому критерю ты выбираешь $ind1 и $ind2 =)

    x2

    Добавлено спустя 53 секунды:
    чот навеяло

    [​IMG]
     
  18. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Возьмешь массив, искомое значения мы знаем, через array_search и найдешь ключ - тот же $ind.
    Только array_search у меня нет и приходится гнать через foreach :(
     
  19. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    А кто тебя заставляет пользоваться таким древним древним дерьмом?
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дерьмом древним как дерьмо мамонта
     
  21. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    типа теплый ламповый пыхпых)
    а когдато и пхп7 будет древним дерьмом мамонта.
     
  22. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Вы что изучали php 3!:) ?, если нет откуда знаете что 'дерьмо'
     
  23. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Срочно поместите этого человека в стеклянную сферу и отправьте в палату мер и весов )
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  25. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    :-D