Добавить элементы в массив, используя цикл - PullRequest
2 голосов
/ 06 июля 2019

Я хочу добавить элемент в мой массив, используя цикл. Но я не могу сделать это правильно.

Я попробовал этот код, и он не может дать мне нужный формат / вывод.

$img_arr[]= "";
foreach ($images as $image) { 
    $img_arr['src'][] .=  $image['src'];
}

Я хочу такой вывод.

array (
    'src' => 'https://example.com/wp-content/uploads/2019/07/3.jpg',
  ),
  array (
    'src' => 'https://example.com/wp-content/uploads/2019/07/2-1.jpg',
  ),
  array (
    'src' => 'https://example.com/wp-content/uploads/2019/07/3.jpg',
  ),
  array (
    'src' => 'https://example.com/wp-content/uploads/2019/07/1-1.jpg',
  ),
  array (
    'src' => 'https://example.com/wp-content/uploads/2019/07/4-1.jpg',
  )

Ответы [ 4 ]

1 голос
/ 06 июля 2019

Этот код:

foreach ($images as $image) { 
    $img_arr['src'][] .=  $image['src'];
}

добавляет к массиву $ img_arr один массив с ключом "src" и значениями URL.Точка до знака равенства также не нужна.

Вы хотите это:

foreach ($images as $image) { 
    $img_arr[] =  ['src' => $image['src']];
}

Это добавляет серию новых массивов в $ img_arr.Каждый добавленный массив представляет собой пару ключ-значение, ключ = "src", значение = [независимо от того, какой URL-адрес].

0 голосов
/ 06 июля 2019

Вы инициализируете массив с $img_arr[] = "";, что приведет к

array(1) {
  [0]=>
  string(0) ""
}

Я думаю, вы имели в виду $img_arr = [];

В foreach вы используете .=, который является строкой оператор конкатенации .Вы можете опустить точку и использовать [], чтобы поместить элемент в конец массива.

Затем добавление к src в качестве ключа в foreach даст вам массив с 2 ключами, гдепервый равен 0 и не используется, второй - key.

Альтернативой может быть использование array_map :

$img_arr = array_map(function ($x) {
    return ['src' => $x["src"]];
}, $images);

print_r($img_arr);

Результат

Array
(
    [0] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/3.jpg
        )

    [1] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/2-1.jpg
        )

    [2] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/3.jpg
        )

    [3] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/1-1.jpg
        )

    [4] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/4-1.jpg
        )

)

Php демо

0 голосов
/ 06 июля 2019
$images = [
    ['src'=>'1.jpg'],
    ['src'=>'2.jpg'],
    ['src'=>'3.jpg'],
    ['src'=>'4.jpg'],
    ['src'=>'5.jpg'],
    ['src'=>'6.jpg']
];

$url = 'https://example.com/wp-content/uploads/2019/07/';
$img_arr = array();
foreach($images as $image){
    $img_arr[] = ['src' => $url.$image['src']];
}

print_r($img_arr);

Output:  
-------------------------------------------------------------------
Array
(
    [0] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/1.jpg
        )

    [1] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/2.jpg
        )

    [2] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/3.jpg
        )
    [3] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/4.jpg
        )
    [4] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/5.jpg
        )
    [5] => Array
        (
            [src] => https://example.com/wp-content/uploads/2019/07/6.jpg
        )
)
0 голосов
/ 06 июля 2019

Измените свой код немного:

$img_arr = []; //create an array variable
foreach ($images as $image) {
  //assign child-array to newly create array variable
  $img_arr[] =  ['src'=>$image['src']]; 
}
print_r($img_arr); //check desired output coming or not?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...