2 回答
TA贡献1829条经验 获得超7个赞
现在,您将进行循环,直到找到一个不是数组的值并将其写入您的singleDimArray. 因为您没有专门设置一个键,所以它会获取默认的数字递增键。因此每个非数组值都会单独注册。
请尝试以下设置singleDimArray为静态变量的位置,以便每次调用下一个嵌套数组的函数时都可以继续添加它:
function nestedToSingle( $array )
{
static $singleDimArray = [];
foreach ( $array as $item ) {
if ( is_array( $item ) ) {
if ( array_key_exists( 'id', $item ) && array_key_exists( 'text', $item ) ) {
$singleDimArray[$item['id']] = $item['text'];
}
if ( array_key_exists( 'children', $item ) && is_array( $item['children'] ) ) {
nestedToSingle( $item['children'] );
}
}
}
return $singleDimArray;
}
TA贡献2036条经验 获得超8个赞
您可以用于array_walk_recursive此用途。它的回调函数获取结构中每个叶节点的键和值。只需检查“文本”键并收集每个匹配值。
$names = [];
array_walk_recursive($input, function($value, $key) use (&$names) {
$key == 'text' && $names[] = $value;
});
use (&$names)必须将$names数组放入函数作用域。
- 2 回答
- 0 关注
- 94 浏览
添加回答
举报