无法获得特定的数组结构

时间:2011-10-14 13:07:17

标签: php arrays rank

我几个小时都在闲逛,以获得一个特定的阵列,但无法弄明白。

我用foreach循环得到这个启动数组:

Array
(
   [0] => Title 1
   [1] => Image 1.jpg
   [2] => Title 2
   [3] => Image 2.png
   [4] => Text 1
)

我生成了一个数组来订购第一个数组(当用户拖放第一个数组的元素时)

Array
(
   [0] => 1
   [1] => 4
   [2] => 0
   [3] => 2
   [4] => 3
)

我需要的是将第二个数组(1,4,0​​,2,3)的VALUES与第一个数组的键([0],1 ...)链接到准确地说

Array
(
   [1] => Text 1
   [4] => Image 2.png
   [0] => Image 1.jpg
   [2] => Title 1
   [3] => Title 2
)

我尝试过array_combine,但它没有给我上面的结果。

我已经制定了一个模式来理解这个问题:

enter image description here

2 个答案:

答案 0 :(得分:4)

这是一些伪代码(我复制粘贴并且懒得纠正它是有效的PHP 我纠正了它):

<?php
$items = Array
(
   0 => 'Title 1',
   1 => 'Image 1.jpg',
   2 => 'Title 2',
   3 => 'Image 2.png',
   4 => 'Text 1',
);
$order = Array
(
   0 => 1,
   1 => 4,
   2 => 0,
   3 => 2,
   4 => 3,
);

foreach ($order as $itemPosition) {
    $sorted[] = $items[ $itemPosition ];
}

// optionally 
ksort($sorted);
var_dump($sorted);

当然,这是假设您的$order数组按键排列。如果不是,您可以在执行ksort之前对其foreach进行操作。

http://codepad.org/Lq8iw29w

答案 1 :(得分:0)

您正在获取第二个数组的每个值,并将其用作第二个数组的键,以获取第一个数组的键,而使用第二个数组的顺序并键入输出:

$mapped = array();

foreach($arr2 as $value)
{
    $mapped[$value] = $arr1[$arr2[$value]];
}

输出:

Array
(
    [1] => Text 1
    [4] => Image 2.png
    [0] => Image 1.jpg
    [2] => Title 1
    [3] => Title 2
)

Demo