【问题标题】:Find second level array keys only仅查找二级数组键
【发布时间】:2014-04-28 21:12:52
【问题描述】:

通过使用 odbc_fetch_array,我得到一个查询并将其存储到一个数组中

$result = odbc_exec($idconex,$consulta) or die("Query failed(-1)");
$rawdata= array();
$i=0;

while($row = odbc_fetch_array($result))
{
     $rawdata[$i] = $row;
     $i++;
}

$myArray = $rawdata;
foreach ($rawdata as $sub){
     $myArray = array_merge($myArray, $sub);
}

生成的数组是这样的:

 Array
 (

    [0] => Array
        (
        [Part Number] => 51555K
        [Lote] => TJ14-K001
        [Description] => Metal Ring
        [UM] => EA
        [Location] => TEMP
        [Quantity] => 12600
        [Boxes] => 42
        [Pallet] => 1
        [PO] => 
        [SO] => 
        [status] => G
        [palletid] => 193375
    )

    [1] => Array
        (
        [Part Number] => 51555K
        [Lote] => TJ14-K001
        [Description] => Metal Ring
        [UM] => EA
        [Location] => TEMP
        [Quantity] => 12600
        [Boxes] => 42
        [Pallet] => 1
        [PO] => 
        [SO] => 
        [status] => G
        [palletid] => 193376
    )
)

使用从 0 到 170 的数组键。我想从第二级获取数组键。使用这个例子:

Find all second level keys in multi-dimensional array in php

我能够获得二级密钥,但像这样与一级密钥合并:

[...first 160 array keys...]
...
[160] => 160
[161] => 161
[162] => 162
[163] => 163
[164] => 164
[165] => 165
[166] => 166
[167] => 167
[168] => 168
[169] => 169
[170] => 170
[171] => Part Number
[172] => Lote
[173] => Description
[174] => UM
[175] => Location
[176] => Quantity
[177] => Boxes
[178] => Pallet
[179] => PO
[180] => SO
[181] => status
[182] => palletid

最后使用这段代码:

foreach($myArray as $key => $value)
{
     if(is_numeric($key))
     {
          unset($myArray[$key]);
     }
}

我只将二级键放入数组中:

 Array
 (
     [0] => Part Number
     [1] => Lote
     [2] => Description
     [3] => UM
     [4] => Location
     [5] => Quantity
     [6] => Boxes
     [7] => Pallet
     [8] => PO
     [9] => SO
     [10] => status
     [11] => palletid
 )

有什么方法可以更有效地获取二级密钥?这是我的实际代码:

$result = odbc_exec($idconex,$consulta) or die("Query failed(-1)");
$rawdata= array();
$i=0;

while($row = odbc_fetch_array($result))
{
     $rawdata[$i] = $row;
     $i++;
}
$myArray = $rawdata;
foreach ($rawdata as $sub){
     $myArray = array_merge($myArray, $sub);
}

foreach($myArray as $key => $value){
     if(is_numeric($key))
     {
          unset($myArray[$key]);
     }
}

echo "<PRE>";
print_r (array_keys($myArray));
echo "</PRE>";

【问题讨论】:

    标签: php arrays multidimensional-array key


    【解决方案1】:

    不确定我是否遵循所有这些,但这似乎可以代替所有foreachs:

    $result = odbc_exec($idconex,$consulta) or die("Query failed(-1)");
    
    while($row = odbc_fetch_array($result))
    {
         $rawdata[] = $row;
    }
    $myArray = array_keys($rawdata[0]);
    

    【讨论】:

      猜你喜欢
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2016-06-07
      • 2023-03-25
      • 2017-10-21
      • 1970-01-01
      相关资源
      最近更新 更多