【问题标题】:How can i fill an array from another one in PHP? [duplicate]如何在 PHP 中填充另一个数组? [复制]
【发布时间】:2022-10-14 10:27:19
【问题描述】:

我有两个数组:

第一个有水果组合:

Array
(
    [Apple] => Array
        (
            [Pineaple] => 4
            [Strawberry] => 1
        )

    [Watermelon] => Array
        (
            [Peach] => 3
        )

)

第二个是这个,它是空的,因为我想从第一个存储:

Array
(
    [Apple] => Array
        (
            [Pineaple] => 0
            [Strawberry] => 0
            [Watermelon] => 0
            [Peach] => 0
        )

    [Watermelon] => Array
        (
            [Pineaple] => 0
            [Strawberry] => 0
            [Watermelon] => 0
            [Peach] => 0
        )
)

我想像这样将信息传递给第二个数组。它必须具有水果的所有组合和发生次数。

Array
(
    [Apple] => Array
        (
            [Pineaple] => 4
            [Strawberry] => 1
            [Watermelon] => 0
            [Peach] => 0
        )

    [Watermelon] => Array
        (
            [Pineaple] => 0
            [Strawberry] => 0
            [Watermelon] => 0
            [Peach] => 3
        )
)

【问题讨论】:

标签: php arrays multidimensional-array


【解决方案1】:

它有点像 foreach 循环的噩梦,但这有效

它遍历第一个数组并检查相关键是否存在于第二个数组中,如果存在则将数组 1 中的值添加到数组 2 中。

它不会在第二个数组中创建新的事件,但如果这是您想要做的,那么更改将很简单。

$one = [
        ['Apple' => ['Pineaple' => 4, 'Strawberry'=>1]],
        ['Watermelon' => ['Peach' => 3]]
];
#print_r($one);
$two = [
        'Apple' => ['Pineaple' => 0, 'Strawberry' => 0, 'Watermelon' => 0, 'Peach' => 0],
        'Watermelon' => ['Pineaple' => 0, 'Strawberry' => 0, 'Watermelon' => 0, 'Peach' => 0]
];
#print_r($two);

foreach($one as $o) {
    foreach($o as $key => $row) {
        // check we have a key in array 2
        if ( isset( $two[$key]) ) {
            foreach( $row as $fruit => $val ){
                // check we have that key in the sub array
                if ( isset( $two[$key][$fruit]) ) {
                    $two[$key][$fruit] = $two[$key][$fruit] + $val;
                }
            }
        }
    }
}
print_r($two);

结果

Array
(
    [Apple] => Array
        (
            [Pineaple] => 4
            [Strawberry] => 1
            [Watermelon] => 0
            [Peach] => 0
        )

    [Watermelon] => Array
        (
            [Pineaple] => 0
            [Strawberry] => 0
            [Watermelon] => 0
            [Peach] => 3
        )
)

【讨论】:

  • 我不认为这个答案非常鼓舞人心或代表您的编程能力的质量。
猜你喜欢
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多