【问题标题】:Assigning an array as a value of another array将数组分配为另一个数组的值
【发布时间】:2015-12-16 05:20:33
【问题描述】:

我有三个数组,我需要创建一个可以是多维的数组。

第一个数组

Array
(
    [0] => Test_One
    [1] => Test_two
)

第二个数组

Array
(
   [0] => www.link.com
   [1] => www.link2.com
)

第三个数组

Array
(
   [0] => Song1
   [1] => song2
)

我想要什么

Array
(
   [www.link.com] => Array
                     (
                        [0] => Test_one
                        [1] => Song1
                     )
   [www.link2.com] => Array
                     (
                        [0] => Test_two
                        [1] => Song2
                     )
 )

【问题讨论】:

  • 到目前为止您尝试过什么?
  • 那么是匹配键的关系吗?每个数组中是否总是有相同数量的元素?
  • 三个数组的长度是否相同?

标签: php arrays multidimensional-array delimiter


【解决方案1】:

假设您在所有三个数组中都有相同数量的元素:

<?php
$arr1 = Array
(
    0 => "Test_One",
    1 => "Test_two"
);

$arr2 = Array
(
    0 => "www.link.com",
    1 => "www.link2.com"
);

$arr3 = Array
(
    0 => "Song1",
    1 => "Song2"
);

$final = []; //for versions below PHP 5.4 use $final = array();

foreach($arr2 as $key=>$value) {
    $final[$value] = [$arr1[$key],$arr3[$key]];
}

print_r($final);

将输出:

Array
(
    [www.link.com] => Array
        (
            [0] => Test_One
            [1] => Song1
        )

    [www.link2.com] => Array
        (
            [0] => Test_two
            [1] => Song2
        )

)

更新:简化了foreach 循环。来自评论@uchiha

【讨论】:

  • 您可以将 foreach($arr2 as $key=&gt;$value) { $final[$value][] = $arr1[$key]; $final[$value][] = $arr3[$key]; } 简化为 foreach($arr2 as $key=&gt;$value) { $final[$value] = [$arr1[$key],$arr3[$key]]; }
  • 是的,它可以:) [更新]
【解决方案2】:

假设您在所有三个数组中没有相同数量的元素:

<?php
$arr1 = Array
(
    0 => "Test_One",
    1 => "Test_two"
);

$arr2 = Array
(
    0 => "www.link.com",
    1 => "www.link2.com"
);

$arr3 = Array
(
    0 => "Song1",
);

$final = []; //for versions below PHP 5.4 use $final = array();

foreach($arr2 as $key=>$value) {
    if(array_key_exists($key,$arr1)) {
        $final[$value][] = $arr1[$key];
    }
    if(array_key_exists($key,$arr3)) {
        $final[$value][] = $arr3[$key];
    }
}

print_r($final);

输出:

Array
(
    [www.link.com] => Array
        (
            [0] => Test_One
            [1] => Song1
        )

    [www.link2.com] => Array
        (
            [0] => Test_two
        )

)

【讨论】:

    【解决方案3】:

    希望有帮助:)

    <?php 
    $array1 = Array
    (
        'Test_One',
        'Test_two'
    );
    
    
    $array2 = Array
    (
       'www.link.com',  
       'www.link2.com'
    );
    
    $array3 = Array
    (
       'Song1',
      'song2'
    );
    
    $array4 = array();
    $i = 0;
    foreach ($array2 as $a2){
        $array4[$a2][] = $array1[$i];
        $array4[$a2][] = $array3[$i];
        $i++;
    }
    echo "<pre>";
    print_r($array4);
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2017-01-29
      • 2016-06-04
      • 2017-11-03
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多