За последние 24 часа нас посетили 18876 программистов и 1710 роботов. Сейчас ищут 915 программистов ...

заменить все элементы массива по ключу

Тема в разделе "PHP для новичков", создана пользователем tesla, 1 июн 2016.

  1. tesla

    tesla Активный пользователь

    С нами с:
    29 фев 2016
    Сообщения:
    34
    Симпатии:
    1
    Прошу меня простить за нечетко сформулированный вопрос в шапке, сейчас попытаюсь объяснить.
    Есть массив данных полученный в результате запроса к базе. В массиве есть поле даты в формате unix timestamp.
    Мне нужно заменить в этом массиве $result все элементы с ключом date датой "пропущенной" через функцию преобразования даты в нормальный вид.
    Весь этот геморрой нужен потому, что мне нужно отдать уже преобразованные в человеческий вид данные с помощью json в jquery скрипт.
    Например, начинаю как-то так:
    Код (PHP):
    1. foreach ($result as $item){
    2. $converted[] = unix_to_human($item['created']); // получил массив дат в нужном формате
    3. }
    И тут тупняк, как в исходном массиве заменить даты новыми? По идее это array_replace, но не совсем понятно как правильно им воспользоваться, ведь первый массив имеет такую вложенную структуру:
    Код (Text):
    1.  
    2. [0]=>  //первая новость
    3. array(16) {
    4. ......
    5. ["date"]=>1234234234
    6. ......
    7. }
    8. [2]=>   //вторая новость
    9. array(16) {
    10. ......
    11. ["date"]=>1234234234
    12. ......
    13. }
    а второй просто
    Код (Text):
    1.  
    2. [0]=>
    3. string(15) "23 мая 2016 "
    4. [1]=>
    5. string(15) "23 мая 2016 "
    6. ....
     
  2. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Господи... А зачем? Вынимаешь значение из массива с той датой которая тебя не устраивает, дальше используешь функцию preg_replace меняешь всё то что тебе надо поменять, ну то как хочешь чтобы выглядело и выкидываешь туда куда тебе надо. ну или запиши обратно в базу. Ну или раз уж ты там хочешь реализовать своё то используй функцию array_replace... `https://php.ru/manual/function.array-replace.html`.. Не совпадают массивы? Перезапиши всё в другой массив по циклу. и всё. Наверняка реализация твоей задачи кроется не в одном способе, ну исходя из того что ты сказал, их целая масса, вопрос в том что ты хочешь сделать конкретно.
     
    #2 askanim, 1 июн 2016
    Последнее редактирование: 1 июн 2016
  3. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    пробегайся по всему массиву, полученному из базы и изменяй в этом массиве, а не создавай новый с заменами. из базы то у тебя одномерный массив жеж
     
  4. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Да зачем если он это выводит куда - то, то пусть сразу применяет, свою функцию и выводит... А если надо хранить это новое значение, то пусть обратно в бд записывает. Всё зависит от того что ему надо.
     
  5. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    он в json фигачит ответ для jquery. т.е. наверняка return / echo / die (json_encode) поэтому так и написал
     
  6. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Ну при выборке пусть сразу применяет и складывает в массив. И возвращает массив или кодирует его в json формат.
     
  7. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    тут смотря как выборка идет, нам же не известна ни cms ни фреймворк
     
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Ну дак я его и спросил что ему надо то, на выхлопе... Куда он это и что потом собирается делать.
     
  9. tesla

    tesla Активный пользователь

    С нами с:
    29 фев 2016
    Сообщения:
    34
    Симпатии:
    1
    upd

    решил задачу так:
    PHP:
    1. foreach ($lazyFeed as $item){
    2.                 $converted[] = array("created" => unix_to_human($item['created']));
    3.             }
    4.             $res = array_replace_recursive($lazyFeed, $converted);
     
    #9 tesla, 1 июн 2016
    Последнее редактирование: 1 июн 2016
  10. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Так тебе просто нужно было получить массив с датами?