За последние 24 часа нас посетил 17661 программист и 1744 робота. Сейчас ищет 1101 программист ...

Функция сбора ассоциативного массива из массива ключей и значений существует?

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

  1. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Здравствуйте!

    Можно ли создать ассоциативный массив из массива ключей и значений какой-то стандартной функцией в php? Без написания своего цикла.
    В развитие вопроса - есть ли такая стандартная функция, которая еще предварительно применяет задаваемую пользовательскую функцию к каждому элементу из массива значений, а потом уже собирает готовый ассоциативный массив? :)
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    array_map
     
    MouseZver и borus нравится это.
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Прям как для тебя писали - держи.
     
    denis01, MouseZver и borus нравится это.
  4. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Спасибо. Позвольте не в тему. Есть ли в php функция, которая возвращает подстроку строки после(не включая) определенного символа или их набора или надо строить комбинацию из функций?
     
  5. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Спасибо. Попробовал применить ее так:
    Код (Text):
    1. class MyClass{
    2.     public $resized_files = array();
    3.  
    4.     public function get_product_path($file){
    5.             return $file.'someadd';
    6.     }
    7.     protected function getListQuery(){
    8.         $var = array('dssa','asasf','sdfg');
    9.         $this->resized_files = array_combine($var, array_map("get_product_path",$var));
    10.         ...
    11.     }
    12. }
    Возвращает null в $this->resized_files. Почему?
     
  6. denis01

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

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

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну тут уж либо регуляркой, либо двумя функциями. Одной находишь позицию, другой дергаешь с позиции подстроку. Второй вариант быстрее.
     
  8. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Я дебажу в Phpstorm. На входе в array_combine($var, array_map("get_product_path",$var)) есть данные в массиве $var, но в глубь функции array_map phpstrom дебагнуть не дает, видимо это как само собой разумеющееся. Поэтому на следующем ходе отладке в $this->resized_files вижу сразу только Null. Как отладить глубже?
    Хотя вот, наш зацепку:
    то есть get_product_path не находится, хотя она выше определена. Как сделать так, чтобы находилась?
     
    #8 borus, 4 июл 2017
    Последнее редактирование: 4 июл 2017
  9. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    помогли разобраться, спасибо. надо было так:
    PHP:
    1. $this->resized_files = array_combine($var, array_map([$this,"get_product_path"],$var));
     
  10. denis01

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

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