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