2017-11-05 5 views
-2

次の配列がデータベースから生成され、キーフィールド "comp"が配列にプッシュされます。 次の出力は、配列にトラバースして順序を入れ替えて生成します。アレイPHP連想配列がキーの位置を置き換えます

Array 
    (
     [0] => Array 
      (
       [fname] => Calvin 
       [lname] => harris 
       [age] => 22 
       [comp] => IT 
      ) 

     [1] => Array 
      (
       [fname] => zayn 
       [lname] => dusk 
       [age] => 21 
       [comp] => HR 
      ) 

    ) 

「COMP」キーの

出力は「LNAME」の後にリストされるべきである したがって、アレイ組み込み機能または以下に示すような出力を得るための効率的なコードがある場合。

期待される結果は、年齢の値を取得するには、COMPのキーと値を追加するarray_pop使用するarray_pushを使用して、配列からそれを取り外す前に

Array 
(
    [0] => Array 
     (
      [fname] => Calvin 
      [lname] => harris 
      [comp] => IT 
      [age] => 22 

     ) 

) 
+0

意味がありません。なぜあなたはそれのようなものが必要でしょうか?セマンティクス?配列を作成するときに「順序」を設定しないのはなぜですか? –

+0

@OfirBaruch私はCSVファイルを生成するためにこれを実行したいと思いますが、上の例は – Sam

+0

です@OfirBaruch [comp] =>残りのデータはarray_pushを使用してプッシュされ、選択クエリから引き出されます – Sam

答えて

0

これにはarray_key_up()関数を使用できます。


Array 
    (
     [0] => Array 
      (
       [fname] => Calvin 
       [lname] => harris 
       [comp] => IT 
       [age] => 22 
      ) 

     [1] => Array 
      (
       [fname] => zayn 
       [lname] => dusk 
       [comp] => HR 
       [age] => 21 
      ) 

    ) 

必要な機能

foreach($arrays as &$array) { 
    $array = array_key_up($array, 'comp'); 
} 

function array_key_up($array, $key) 
{ 
    $keys = array_keys($array); 
    $index = array_search($key, $keys, true); 

    if ($index === false) { 
     return $array; 
    } 
    $offset = max(0, $index - 1); 

    return array_slice($array, 0, $offset, true) 
     + array($key => $array[$key]) 
     + array_slice($array, $offset, null, true); 
} 
+0

私のソリューションははるかに効率的ですが、素晴らしいコードだと思います。 –

+0

より効率的です、私は同意します。実際には(cc @Sam)最初から希望の順序で配列を構築する方が良いでしょう。アレイが既に確立された後にスライスしてダイスする必要はない。 – jaswrks

0

をする必要があります。 その後、私たちはコンプと年齢を追加します。

($メンバー)

[0] => Array 
     (
      [fname] => Calvin 
      [lname] => harris 
      [age] => 22 
     ) 

代わりのarray_push、我々は単により速く、シンプルである$arr[$i][$key] = $valを使用することができます。

コード:あなたは任意のPHPコードを供給していなかったので

$comp = 'IT'; 
$age = array_pop($members[0]); 
$members[0]['comp'] = $comp; 
$members[0]['age'] = $age; 

、私はあなたの変数に応じてそれを調整することができませんでしたが、私はあなたのアイデアを得たと考えています。

+0

ありがとう!あなたの貴重なために私を助けました! – Sam

関連する問題