在PHP中获取第一维数组

在PHP中获取第一维数组,php,arrays,Php,Arrays,我已经彻底了解了google,并且找不到如何在PHP中放弃二维数组而只留下一维数组的解决方案 发件人: 致: 多维数组是由包含第二层的第一层、包含第三层的第二层构建的,依此类推 获得第一个维度意味着你也将获得第二个维度。。因为第二级是第一级的一部分,所以我不确定你到底想要什么,但根据以下代码: <?php foreach($array as $item) { if(is_array($item) || is_object($item)) { unset($item)

我已经彻底了解了google,并且找不到如何在PHP中放弃二维数组而只留下一维数组的解决方案

发件人:

致:


多维数组是由包含第二层的第一层、包含第三层的第二层构建的,依此类推


获得第一个维度意味着你也将获得第二个维度。。因为第二级是第一级的一部分,所以我不确定你到底想要什么,但根据以下代码:

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


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

您使用的是
array\u 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)

假设您只需要标量值,您只需

$result = array_filter($theArray, 'is_scalar')
这将从数组的第一级删除非整数、浮点、字符串或布尔值的所有项

进一步资料:


如果您不需要它是动态的,例如,如果您知道
参数
将是非标量的,您可以简单地取消设置该值或为其指定null或任何您希望的值,例如

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

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

此函数将解析原始数组,直到达到最大维度,然后返回该值

<?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);
?>


给出阵列和预期输出的示例???你的问题可能意味着很多东西,没有“二维数组”。参数是一个stdClass对象,您可以简单地
unset
it.PHP数组总是只有一个dimenston。您想在此处将类型为
stdClass
的值更改为零长度字符串。在您的示例中,您不需要嵌套在“参数”中的对象,但该对象只是数组的一部分,就像int、strings、arrays一样,但不太优雅的解决方案。值得注意的是,使用如上所示的数组_过滤器也会删除任何具有空值的键值对。标量变量是那些包含整数、浮点、字符串或布尔值的变量。数组、对象和资源类型不是标量。
$array['parameters'] = null;
// or
unset($array['parameters']);
<?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);
?>