2011-10-14 19 views
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 
) 

は、第2配列の値を連結することである(1、4、0、2、3)最初の配列のキーで([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

答えて

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

+0

それはトリックでした!どうもありがとうございます!それは私をたくさん助けました! – user990463

+0

喜んで助けました。私は元のデータのキーと値の交差がこれを理解しにくくしたと思っています。データをどのように組み合わせるかを知るには時間がかかりました。 – hakre

+0

はい、わかりました。私の問題を説明する方法を理解するのに、はるかに時間がかかりました。 – user990463

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配列がキーを順番に持っていることを前提としています。そうでない場合は、foreachを実行する前にksortを実行することもできます。

http://codepad.org/Lq8iw29w

関連する問題