1

我几个小时以来一直在闲逛以获得特定的数组,但无法弄清楚。

我用 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 但它没有给我上面的结果。

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

在此处输入图像描述

4

2 回答 2

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

于 2011-10-14T13:15:09.017 回答
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
)

演示

于 2011-10-14T22:28:58.663 回答