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 關注
- 128 瀏覽
添加回答
舉報