2017-08-14 4 views
0

私は値の配列を含むキーとしてタイムスタンプを持つ長い多次元配列を持っています。このようなものですがタイムスタンプの多いもの:多次元配列の他のすべてのキーを削除しますが、キーを保持します

array(3) { 
    [1502609400]=> 
    array(2) { 
    ["Item1"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(100) 
    } 
    ["Item2"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(50) 
    } 
    } 
    [1502611200]=> 
    array(2) { 
    ["Item1"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(200) 
    } 
    ["Item2"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(150) 
    } 
    } 
    [1502613000]=> 
    array(2) { 
    ["Item1"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(500) 
    } 
    ["Item2"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(250) 
    } 
    } 

タイムスタンプとしてキーを失うことなく、配列の2番目ごとの配列を削除するにはどうすればよいですか?だから私はこれで終わる:

array(3) { 
    [1502609400]=> 
    array(2) { 
    ["Item1"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(100) 
    } 
    ["Item2"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(50) 
    } 
    } 
    [1502613000]=> 
    array(2) { 
    ["Item1"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(500) 
    } 
    ["Item2"]=> 
    array(1) { 
     ["PRICE"]=> 
     float(250) 
    } 
    } 

私はすべてのキーを失い、0、1、2などの代わりにタイムスタンプので終わるループと解除毎秒キーを使用している場合。ループでは

+0

ループでは、インデックスをチェックし、すべての設定を解除するだけです2番目の要素: –

答えて

4

、インデックスおよび設定解除毎秒の要素をチェック:例その種類に

$index = 0; // points to first element 

foreach ($array as $key => $value) { 
    if ($index % 2 != 0) { //check for un-even 
     unset($array[$key]); 
    } 

    $index++; // move pointer to next element 
} 
+0

クイック返信ありがとうございますが、例えば$ keyは1502611200です。これは2で割り切れるので、これはうまくいきません。 – ubik

+0

偶数/奇数の要素を見つける目的だけ、別々にそれを維持するためにカスタム$ index変数を追加しました。 –

+0

私はあなたの答えと@Osamaのものを組み合わせたので、あまりにも言いたいと思っています:) ありがとう@M Idreesこれは素晴らしい作品です! 正しいとマークされています。 – ubik

1
$i=1 // where the key to remove 
$x=0; //loop to determine the key position 
foreach ($array as $key=>$value){ 
if($x==$i){ 
unset($array[$key]); 
} 
$x++; 
} 
+0

ありがとう!これは完全に機能します。多くの意味をなさないカウンタを追加することを考えなかった。 *編集:申し訳ありませんが、これは長い配列では機能しません。私は何かを誤解しましたか? – ubik

+0

なぜ最初の要素を変更したいのですか? – localheinz

+0

同じ考え方に従えば、コードを編集することができる場合や、自分でできる場合は、2番目ごとの項目は1,3,5,6でなければならず、カウンターは配列数より少なくなければなりません – Osama

1

、簡単なforeachの:

をあなたはこのように、カスタム$index変数を使用することができます

foreach ($array as $key => $val) { 
    if (array_key_exists('Item2', $val)) { 
     unset($val['Item2']); 
    } 
} 
関連する問題