将数组键(数字)排序到特定的顺序数组(数字)

时间:2016-06-22 11:25:12

标签: php arrays

我想更改以下array到第二array个值的顺序。

Array
(
    [2] => Array
        (
            [title] => Photometric Interpretation
            [name] => photometric_interpretation
        )

    [3] => Array
        (
            [title] => Make
            [name] => make
        )

    [4] => Array
        (
            [title] => Model
            [name] => model
        )

    [5] => Array
        (
            [title] => Strip Offsets
            [name] => strip_offsets
        )

    [6] => Array
        (
            [title] => Samples Per Pixel
            [name] => samples_per_pixel
        )

    [7] => Array
        (
            [title] => Rows Per Strip
            [name] => rows_per_strip
        )
)

我想将上面的顺序更改为以下数组的值。

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

我尝试了什么

$index = array_flip(['3,4,7,6,5,2']);
$assigned_fields = array_merge($fisrt_array, $index);

我想要的输出是

Array
(

    [3] => Array
        (
            [title] => Make
            [name] => make
        )

    [4] => Array
        (
            [title] => Model
            [name] => model
        )

    [7] => Array
        (
            [title] => Rows Per Strip
            [name] => rows_per_strip
        )

    [6] => Array
        (
            [title] => Samples Per Pixel
            [name] => samples_per_pixel
        )

    [5] => Array
        (
            [title] => Strip Offsets
            [name] => strip_offsets
        )

    [2] => Array
        (
            [title] => Photometric Interpretation
            [name] => photometric_interpretation
        )
)

2 个答案:

答案 0 :(得分:2)

这应该可以正常工作。

$a = ['2' => ['title' => 'Photometric Interpretation',
           'name' => 'photometric_interpretation'],
    '3' => ['title' => 'Make',
            'name' => 'make']];

$b = Array
(
    0 => 3,
    1 => 2
);

$c = [];
foreach($b as $s) {
    $c[$s] = $a[$s];
}
print_r($c);

答案 1 :(得分:1)

您需要使用array_replace代替array_merge

$assigned_fields = array_replace(array_flip($index), $fisrt_array);