向多维数组PHP追加值

向多维数组PHP追加值,php,arrays,multidimensional-array,append,Php,Arrays,Multidimensional Array,Append,我在PHP中有一个多维数组,如下所示: Array ( [0] => Array ( [background] => https://example.com/image.jpg [description] => Example text [url] => https://example.com ) [1] => Array ( [background] =>

我在PHP中有一个多维数组,如下所示:

Array
(
    [0] => Array
    (
        [background] => https://example.com/image.jpg
        [description] => Example text
        [url] => https://example.com
    )

    [1] => Array
    (
        [background] => https://example.com/image.jpg
        [description] => Example text
        [url] => https://example.com
    )
)
我想循环遍历这个数组,并将相同的参数附加到两个
url
键。我尝试通过一个带有双foreach循环的函数来实现这一点,并成功地附加了参数,但返回带有更新值的数组时遇到了问题

以下是我尝试过的:

呼叫

$array = append_field($array, 'url', '?parameter=test');
功能

function append_field($array, $field, $parameter)
{
    foreach ($array as $inner_array) :
        foreach ($inner_array as $key => $append) :
            if ($key == $field) :
                $append .= $parameter;
            endif;
        endforeach;
    endforeach;

    return $array;
}

您需要在两个foreach循环中将数组值作为引用传递,以便能够写入它们。否则,您将对值的副本进行迭代

参考:

但您也可以在不使用引用的情况下执行此操作,这一次是通过写入包含两个键的完整数组路径:

function append_field($array, $field, $parameter)
{
    foreach ($array as $i => $inner_array) :
        foreach ($inner_array as $key => $append) :
            if ($key == $field) :
                $array[$i][$key] .= $parameter;
            endif;
        endforeach;
    endforeach;

    return $array;
}
换一行就行了

$append .= $parameter;
对此

$inner_array[$key] = $append.$parameter

foreach($array as$internal\u array):
foreach($array as&$internal\u array):

其他一些方法,例如使用

$inner_array[$key] = $append.$parameter
[akshay@localhost tmp]$ cat test.php
<?php
$arr = array(
    array(
        'background'=>'https://example.com/image.jpg',
        'description'=>'Example text',
        'url'=>'https://example.com'
    ),
    array(
        'background'=>'https://example.com/image.jpg',
        'description'=>'Example text',
        'url'=>'https://example.com'
    ),

);

$append = array('url'=>'?parameter=test');
print_r( 
    array_map(function($item) use ($append) {foreach($append as $k => $v){ if(isset($item[$k]))$item[$k].=$v;}return $item;}, $arr )
);


?>
[akshay@localhost tmp]$ php test.php
Array
(
    [0] => Array
        (
            [background] => https://example.com/image.jpg
            [description] => Example text
            [url] => https://example.com?parameter=test
        )

    [1] => Array
        (
            [background] => https://example.com/image.jpg
            [description] => Example text
            [url] => https://example.com?parameter=test
        )

)