2017-08-14 24 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) 
    } 
    } 

我怎样才能删除所有的数组中的每个第二阵列不失键作为时间戳?所以我结束了这一点:

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) 
    } 
    } 

如果我使用一个for循环和取消每秒关键我失去所有的按键和0,1,2等来代替时间戳结束。

+0

在循环中,只需检查索引,然后取消设置第二个元素: –

回答

4

在一个循环中,检查指标和取消所有的第二个元素:

可以使用自定义$index变量,就像这样:

$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

根据同样的想法,你可以做到这一点,每秒的项目必须是1,3,5,6,如果你需要帮助,计数器必须小于阵列数量我可以编辑代码或者如果你可以自己做 – Osama

1

在那种情况下,一个简单的foreach可以比标准功能更有效率地穿孔:

foreach ($array as $key => $val) { 
    if (array_key_exists('Item2', $val)) { 
     unset($val['Item2']); 
    } 
}