Как использовать результат цикла while в трехмерном массиве в php? - PullRequest
0 голосов
/ 30 марта 2019

Я хотел бы передать результат цикла while в качестве значения в трехмерный массив, я пытался, но не смог его получить. Я пытаюсь решить эту проблему за несколько дней. Любые предложения или ответы приветствуются. Спасибо

    $messages = array(
   'sender' => "akhil",
   'messages' => array(
    //////////////while loop starts
    while($i < $data){   
    array(
        'number' =>$data[$i],//////here i want to pass the while loop 
          variable
        'text' => rawurlencode('Hello,.........')
      ) 
    $i++;
    }
    /////////////while loop ends

     )
    );


  ///the would like to get the below result 


   $messages = array(
 'sender' => "akhil",
  'messages' => array(
    array(
        'number' => 918xxxxxx,
        'text' => rawurlencode('Hello,------')
    ),
    array(
        'number' => 9196xxxxxx,
        'text' => rawurlencode('Hello,----')
    )
    ), array(
        'number' => 919xxxxx,
        'text' => rawurlencode('Hello,----')
    )
    )
  );

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

То, что вы ищете, называется Анонимная функция . Вы можете достичь ожидаемого поведения, выполнив следующее:

'messages' => (function(){
  $res = [];
  while($i < $data){
    $res[] = [
      'number' =>$data[$i],//////here i want to pass the while loop variable
      'text' => rawurlencode('Hello,.........')
    ];
    $i++;
  }
  return $res;
})(),
...

Я не знаю точную структуру ваших данных, но я бы поменял while на array_map(). Это будет выглядеть так:

'messages' => array_map(function($d){
  return [
     'number' =>$d,
     'text' => rawurlencode('Hello,.........')
  ]
},$data),
...

Хоуп, который помогает,

0 голосов
/ 30 марта 2019

Вам просто нужно создать массив вне цикла while, а затем вставить в него значения внутри цикла.Ваш код почти там ...

$messages = array('sender' => "akhil",
                  'messages' => array()
                 );
while ($i < count($data)) {   
    $messages['messages'][] = array('number' => $data[$i],
                                    'text' => rawurlencode('Hello,.........'));
    $i++;
}

Демо на 3v4l.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...