За последние 24 часа нас посетили 28219 программистов и 1486 роботов. Сейчас ищут 1082 программиста ...

Вопрос по работе с массивом

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

  1. oleg_

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

    С нами с:
    28 ноя 2012
    Сообщения:
    108
    Симпатии:
    2
    Всем привет
    подскажите как добраться до содержимого массива внутри [*values] ?

    PHP:
    1. $array = (array) $dat;
    2. dpm($array);
    3. (
    4.     [in_preview] =>
    5.     [*values] => Array
    6.         (
    7.             [vid] => Array
    8.                 (
    9.                     [x-default] => 127
    10.                 )
    11.             [langcode] => Array
    и вот это как работает?
    в $data массив
    PHP:
    1. public function processItem($data, &$context) {
    2.     list($id, $title, $body) = $data;
    Нашел на нормальном сайте, не срабатывает у меня.
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    что это? Массивы? Вот https://secure.php.net/manual/ru/language.types.array.php

    PHP:
    1. $arr = [
    2.     'in_preview' => [
    3.     ],
    4.     '*values' => [
    5.         'vid' => [
    6.             'x-default' => '127',
    7.         ],
    8.     ],
    9. ];
    10.  
    11. echo $arr['*values']['vid']['x-default'];
    Что конкретно нужно? Там же как минимум несколько вложенных массивов.
    Чтобы показать нам структуру, делай var_export(), так как результат можно будет вставить в код, а не вручную твой массив создавать.
     
  3. oleg_

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

    С нами с:
    28 ноя 2012
    Сообщения:
    108
    Симпатии:
    2
    PHP:
    1. Drupal\node\Entity\Node::__set_state(array(
    2.    'in_preview' => NULL,
    3.    'values' =>
    4.   array (
    5.     'vid' =>
    6.     array (
    7.       'x-default' => '6812',
    8.     ),
    9.     'langcode' =>
    10.     array (
    11.       'x-default' => 'ru',
    12.     ),
    13.     'revision_timestamp' =>
    14.     array (
    15.       'x-default' => '1478228736',
    16.     ),
    17.     'revision_uid' =>
    18.     array (
    19.       'x-default' => '1',
    20.     ),
    21.     'revision_log' =>
    22.     array (
    23.       'x-default' => NULL,
    24.     ),
    25.     'nid' =>
    26.     array (
    27.       'x-default' => '6791',
    28.     ),
     
  4. denis01

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

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

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

    С нами с:
    28 ноя 2012
    Сообщения:
    108
    Симпатии:
    2
    Значения, нашел как, там свой метод есть $dat->get('field_naz')->value;
    второй вопрос пока не понятен:
    Код (Text):
    1. public function processItem($data, &$context) {
    2.     list($id, $title, $body) = $data;
    в функцию передается массив и внутри функции каким то образом раскладывается по переменным
    list($id, $title, $body) = $data; - это как? У меня не получается
    Или по другому спрошу, как правильно массив передать в функцию?
     
  6. denis01

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

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

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

    С нами с:
    28 ноя 2012
    Сообщения:
    108
    Симпатии:
    2
    Там так:
    предается массив $data= array(1,2,3,4,5,6)
    в функцию
    public function processItem($data, &$context)
    дальше массив раскладывается по переменным
    $1=1; $2=2; $3=3; $4=4; $5=5; $6=6;
    и дальше эти переменные записываются в нужные поля.
    Вот я не могу никак найти ответа, как так они раскладываются так просто?
    list($1, $2, $3, $4, $5, $6) = $data;
    у меня не работает
     
  8. denis01

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

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

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

    С нами с:
    28 ноя 2012
    Сообщения:
    108
    Симпатии:
    2
    Спасибо, в следующий раз буду более внимателен (по поводу переменных).