Php 如何将值向上移动到键,并删除键。数组操作

Php 如何将值向上移动到键,并删除键。数组操作,php,Php,我正在尝试从以下内容更改阵列: Array ( [0] => Array ( [BID_OPEN] => Array ( [0] => 0.718282 ) ) [1] => Array ( [BID_CLOSE] => Array ( [0] => 1.654545

我正在尝试从以下内容更改阵列:

Array ( [0] => Array ( [BID_OPEN] => Array ( [0] => 0.718282 ) ) [1] => Array ( [BID_CLOSE] => Array ( [0] => 1.654545 ) ) [2] => Array ( [BID_OPEN] => Array ( [0] => 1.654878 ) ) ) 我不知道如何开始。我的代码:

foreach($array as $keys=>$values)
{

    if(!empty($array [$c]['BID_OPEN']))
    {
        $inital_part1 = array("BID_OPEN", $array [$c]['BID_OPEN']);
    }
    else
    {
        echo '';
    }
    if(!empty($array [$c]['BID_CLOSE']))
    {
        $inital_part2 = array("BID_CLOSE", $array [$c]['BID_CLOSE']);
    }
    else
    {
        echo '';
    }
    $array1[] = $inital_part1;
    $array1[] = $inital_part2;
    $c++;
}
我似乎得到了双重输出,所以当我构建阵列时,foreach给我的输出是所需输出的两倍。谷歌认为这是因为我的数组中某处有一个数组,但我肯定我没有

数组来自一个对象stdclass,我不知道它是什么,我在谷歌上搜索过,但没有发现任何有用的东西。我也能得到一些数字,但只有初始值是正确的,其余的数据似乎没有通过。毫无疑问,这是因为我使用了索引[0]来让它工作


下班后,任何帮助都会很好,谢谢

只要您已经告诉我们关于您的输入数组的所有信息,就可以像这样简单地完成

<?php

$in = [ ['BID_OPEN' => [0.718282]],
        ['BID_CLOSE' => [1.654545]],
        ['BID_OPEN' => [1.654878]]
      ];
print_r($in);

$new = [];  // new array we are building

foreach ($in as $abid) {
    if (array_key_exists('BID_OPEN', $abid) ) {
        $new['BID_OPEN'][] = $abid['BID_OPEN'][0];
    }
    if (array_key_exists('BID_CLOSE', $abid) ) {
        $new['BID_CLOSE'][] = $abid['BID_CLOSE'][0];
    }
}

print_r($new);
结果:

Array
(
    [BID_OPEN] => Array
        (
            [0] => 0.718282
            [1] => 1.654878
        )

    [BID_CLOSE] => Array
        (
            [0] => 1.654545
        )

)

这个期望的结果毫无意义,因为一个数组不能包含同一个键两次。我认为这会被它上面的“零”所超越,允许用户获得最大数组[0][BID_OPEN]集合的最大数目?嗯。我不知道[0][BID_OPEN]=>0.718282[BID_OPEN]=>1.654878应该代表什么样的数据结构。看起来最接近的是一个包含两个键的数组,这两个键都有相同的名称。是否希望得到这种结果?数组[BID\u OPEN]=>Array[0]=>0.718282[1]=>1.654878[BID\u CLOSE]=>Array[0]=>1.654545[1]=>1.645845 Array\u merge\u recursive…$arr?我误解了,我是如何得到您提供的定义为$in的初始数组的?我要处理的数组是我的首要问题。这有点不同。假设$in数组实际上是最初作为请求的答案发布的,但是我是否遗漏了一个步骤?我认为我在答案中构建的测试数组与您在question@AceThanks数值数组索引是隐式添加的,不需要显式定义。您显示的是一个var_dump输出,它显示所有键/索引。Riggs使用的数组与您的数组相同。@请检查代码并。第一个使用上面的代码创建$in。第二种方法使用一种长时间的方法来创建数组。在两个数组中运行代码,您将看到每个数组的结果都是相同的,并且该结果也与原始数组相同。@是否尝试对数组运行代码?如果是这样,如果你不明白我所做的,请解释问题是什么。在提交答案之前,我确实测试了这段代码,结果是真实的
Array
(
    [0] => Array
        (
            [BID_OPEN] => Array
                (
                    [0] => 0.718282
                )

        )

    [1] => Array
        (
            [BID_CLOSE] => Array
                (
                    [0] => 1.654545
                )

        )

    [2] => Array
        (
            [BID_OPEN] => Array
                (
                    [0] => 1.654878
                )

        )

)
Array
(
    [BID_OPEN] => Array
        (
            [0] => 0.718282
            [1] => 1.654878
        )

    [BID_CLOSE] => Array
        (
            [0] => 1.654545
        )

)
$c = 0;
$array1['BID_OPEN'] = [];
$array2['BID_CLOSE'] = [];
foreach($vartttttt as $tunips=>$ert)
{

    $d = 0;
    foreach($ert as $erts=>$val)
    {
        //$array[] = $erts;
        if($erts == 'BID_OPEN')
        {
            array_push($array1['BID_OPEN'], $val[0]);
        }
        if($erts == 'BID_CLOSE')
        {
            array_push($array2['BID_CLOSE'], $val[0]);
        }
        $d++;
    }
    $c++;
}
$array = array_merge($array1, $array2);