在PHP中获取第一维数组

时间:2012-10-24 15:40:55

标签: php arrays

我彻底google了,找不到关于如何在PHP中丢弃第二维数组的解决方案,只留下第一维数组。

自:

array(
  ['type'] => 'func'
  ['function'] => 'Model_Statement_Transaction::sum'
  ['parameters'] =>  
    stdClass(
      statement_id = 8586
      transaction_type = 'raw_flour-import'
      column = 'quantity'
    )
)

要:

array(
  ['type'] => 'func'
  ['function'] => 'Model_Statement_Transaction::sum'
  ['parameters'] => ''
)

5 个答案:

答案 0 :(得分:13)

假设你只想要标量值,你可以简单地做

$result = array_filter($theArray, 'is_scalar')

将从数组的第一级删除非整数,浮点数,字符串或布尔值的所有项。

更多信息:


如果您不需要动态,例如如果您知道parameters将是非标量,您可以简单地取消设置该值或指定null或您想要的任何值,例如。

$array['parameters'] = null;
// or
unset($array['parameters']);

答案 1 :(得分:4)

您使用array_map

$parameters = new stdClass();
$parameters->statement_id  = 8586 ;
$parameters->transaction_type   = 'raw_flour-import' ;
$parameters->column  = 'quantity' ;

$array = array('type' => 'func',
        'function' => 'Model_Statement_Transaction::sum',
        'parameters' => $parameters);

$array = array_map(function ($v){if (is_array($v) || is_object($v)) {return "";}return $v;}, $array);
var_dump($array);

输出

array
  'type' => string 'func' (length=4)
  'function' => string 'Model_Statement_Transaction::sum' (length=32)
  'parameters' => string '' (length=0)

答案 2 :(得分:2)

多维数组构建包含第二级的第一级,第二级包含第三级,依此类推......

获得第一个维度意味着你也将获得二级水平。仅仅因为第二级是第一级的一部分

答案 3 :(得分:1)

我不确定你想要什么,但是通过这段代码:

<?php
foreach($array as $item)
{
   if(is_array($item) || is_object($item))
   {
      unset($item); // or just $item = '';
   }
}
?>

您将从给定的$ array中删除所有第二维数组和对象。

答案 4 :(得分:1)

我知道这是一个老问题,但我在搜索中为其他人发布我的解决方案。

此函数将解析原始数组,直到达到max_d(最大尺寸),然后它将返回该值。

<?php
/**
 * @param $v Curent value that is parsed
 * @param $r Return value when the max_d is reached
 * @param int $max_d Maximum dimension
 * @param int $d Current dimension
 *
 * @return array
 */
function parse($v, $r, $max_d = 1, $d = 0) {
  if (is_array($v)) {
    if ($d >= $max_d) {
      return $r;
    } else {
      $d++;
      return array_map(function ($v) use ($max_d, $r,  $d) {
        return parse($v, $r, $max_d, $d);
      }, $v);   
    }
  } else {
    return $v;
  }
}

// Example:
$new_array = array_map(function ($v) {
    return parse($v, "...", 2);
  }, $original_array);
?>