За последние 24 часа нас посетили 40439 программистов и 1278 роботов. Сейчас ищут 1225 программистов ...

как перед значениями всех ассоциативных ключей которые приходят, добавить строковое значение

Тема в разделе "PHP для новичков", создана пользователем AlexsaiL, 17 май 2017.

  1. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    Мне необходимо перед значениями всех ассоциативных ключей которые приходят, добавить строковое значение(название папки -"HugeImages/") отрывок кода:
    PHP:
    1. $row2['PICTURE_HUGE'] = "HugeImages/".$row2['PICTURE_HUGE'];
    2.                         $row2['PICTURE_HUGE'] = explode(",", $row2['PICTURE_HUGE']);
    получаемый результат приходящего ассоц. массива :
    PHP:
    1. [PICTURE_HUGE] => Array
    2.                 (
    3.                     [0] => HugeImages/h_G1111.jpg
    4.                     [1] => h_G1113.jpg
    5.                     [2] => h_G1114.jpg
    6.                     [3] => h_G1115.jpg
    7.                 )
    и он ставит только первому ключу(нулевому), а остальным нет. Подскажите как можно реализовать, чтобы всем подставлялось?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
  3. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    спасибо, прочитал, прописал, но он ругается код:
    PHP:
    1.  function huge($n) {
    2.                 $n = "huge/";
    3.                     return($n);
    4.                 }
    .......
    PHP:
    1. $arrMap = $row2['PICTURE_HUGE'];
    2.                         $row2['PICTURE_HUGE'] = array_map("huge", $arrMap);
    3.                         $row2['PICTURE_HUGE'] = explode(",", $row2['PICTURE_HUGE']);
    выдает ошибку: Array_map (): Аргумент # 2 должен быть массивом в строке- $row2['PICTURE_HUGE'] = array_map("huge", $arrMap); хотя второму аргументу и так присвоен массив. Хз, что-то не пойму.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    var_dump ( $row2['PICTURE_HUGE'] )
    перед тем что ты написал, вставь в код
     
    AlexsaiL нравится это.
  5. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    вставил в код, не срабатывает, ошибка та же
     
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @AlexsaiL, верь php, он твой друг. У тебя $row2['PICTURE_HUGE'] становится массивом на одну строку ниже, чем ты его передаёшь array_map. Или ты тоже из тех, кто думает, что php исполняет программу, как арабы читают свой язык: снизу вверх?
     
  7. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    ты хочешь сказать что так правильнее?
    PHP:
    1. $row2['PICTURE_HUGE'] = explode(",", $row2['PICTURE_HUGE']);
    2.                         $arrMap = $row2['PICTURE_HUGE'];
    3.                         $row2['PICTURE_HUGE'] = var_dump(array_map("huge", $arrMap));
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Немного. Но вот тебе сказали про var_dump, можно в гугле её ввести, прежде чем использовать, если не знаешь, что это такое? Или обязательно чушь какую-то морозить?..
     
  9. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    почитал на форуме, посмотрел что она творит, выводит на страницу свойства ключей, ну не думаю что ее можно тут применить
     
  10. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Угу :) А ты её куда воткнул? И зачем, главное?
     
  11. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    ну прочитал, заодно проверил что она творит, зато ознакомился)
    --- Добавлено ---
    а ты знаешь каким методом можно всем свойствам ключа поставить в начале строковое значение(название папки)?
     
  12. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    PHP:
    1. <?php
    2.  
    3. $row2 = ['PICTURE_HUGE' => '0,1,2,3,4,5,6,7,8,9'];
    4.  
    5. $row2['PICTURE_HUGE'] = explode(",", $row2['PICTURE_HUGE']);
    6.  
    7. function addstr($str)
    8. {
    9.     return '/'.$str;
    10. }
    11.  
    12.  
    13. $new = array_map('addstr', $row2['PICTURE_HUGE']);
    14.  
    15. var_dump($new);
     
  13. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    Спасибо), я заменил => '0,1,2,3,4,5,6,7,8,9']; на свои данные с бд. Выводит var_dump($new); результат в браузер как надо, но появляется ошибка дополнительно: Fatal error: Cannot redeclare addstr() (previously declared in C:\OpenServer\..... (Невозможно переопределить addstr () (ранее объявленный в C: \ OpenServer \ ......) указывает строку с function addstr($str) {
     
  14. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    Я как понимаю она ругается на то что функцию внутри цикла объявили? выношу отдельно из цикла и функции отдельно, отладка пустая приходит...
     
  15. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ну. Ты даже перевёл же ошибку. Значит у тебя этот файл несколько раз подключается, и каждый раз php видит объявление функции. Решения 4:
    1. Вынести функцию в отдельный файл, подключать require_once
    2. Подключать этот файл require_once
    3. Сделать проверку if (function_exists())
    4. Заменить именованную функцию анонимной: http://php.net/manual/ru/functions.anonymous.php
     
    AlexsaiL нравится это.
  16. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    Вынес функцию в отдельный файл
    PHP:
    1.  <?php
    2.  
    3. function addstr($str) {
    4.     return 'huge/'.$str;
    5. }
    подключил файл:
    PHP:
    1. require_once '../models/addstr.php';
    сделал проверку
    выдает:
    PHP:
    1. addstr функции доступны.
     
  17. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    AlexsaiL нравится это.
  18. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    Ден, Благодарю!:):cool: все прописал, нашел у себя еще одну ошибку - исправил, после чего все заработало!)
    --- Добавлено ---
    Всем спасибо за помощь!) разобрался что к чему!)