使用循环在数组上添加项目

时间:2019-07-06 04:06:25

标签: php arrays loops

我想使用循环将项目添加到我的数组中。但是我做错了。

我尝试了这段代码,但无法提供我想要的格式/输出。

$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 个答案:

答案 0 :(得分:1)

此代码:

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

在$ img_arr中添加一个数组,以“ src”作为键,以URL作为值。等号之前的时间段也是不必要的。

您想要这个:

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

这会将一系列新数组添加到$ img_arr中。添加的每个数组都是一个键值对,key =“ src”,value = [URL无关]。

答案 1 :(得分:0)

稍微更改一下代码:

$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?

答案 2 :(得分:0)

$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
        )
)

答案 3 :(得分:0)

您使用$img_arr[] = "";初始化数组,这将导致

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

我认为您的意思是$img_arr = [];

在foreach中,您使用.=,它是字符串concatenation的运算符。您可以省略点,而仅使用[]将元素推到数组的末尾。

然后将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 demo