我彻底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'] => ''
)
答案 0 :(得分:13)
假设你只想要标量值,你可以简单地做
$result = array_filter($theArray, 'is_scalar')
将从数组的第一级删除非整数,浮点数,字符串或布尔值的所有项。
更多信息:
array_filter
— Filters elements of an array using a callback function is_scalar
— Finds whether a variable is a 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);
?>