Как преобразовать ключи вложенных массивов в индексы Переполнение стека

У меня есть этот массив:

`$arr = array(
'foo' => 'foo',
'bar' => array(
'baz' => 'baz',
'candy' => 'candy',
'vegetable' => array(
'carrot' => 'carrot',
),
),
);

и я хочу изменить это на это:

$arr = array(
'0' => 'foo',
'1' => array(
'0' => 'baz',
'1' => 'candy',
'2' => array(
'0' => 'carrot',
)
),
);

Я пробовал функцию array_values, но она меняет только первый уровень, например:

$arr = array(
'0' => 'foo',
'1' => array(
'baz' => 'baz',
'candy' => 'candy',
'vegetable' => array(
'carrot' => 'carrot',
)
),
);

1

Решение

Дипти-код это здорово. Я немного украсил это:

function array_values_recursive(array $arr ) : array {
$result = array();
foreach ($arr as $value) {
$result[] = is_array($value) ? array_values_recursive($value) : $value;
}
return $result;
}
1

Другие решения

Пожалуйста, используйте ниже функцию. Вы должны повторить цикл рекурсивный / вложенный цикл

function array_values_recursive($arr)
{
$arr2=[];
foreach ($arr as $key => $value)
{
if(is_array($value))
{
$arr2[] = array_values_recursive($value);
}else{
$arr2[] =  $value;
}
}

return $arr2;
}
print_r(array_values_recursive($arr))

Это должно работать. Спасибо

0

это мой настоящий код:

$arr = array();
while($d = mysqli_fetch_assoc($result)) {
$sub_data["id"] = $d["id"];
$sub_data["date"] = $d["date"];
$sub_data["n_trans"] = $d["n_trans"];
$sub_data["doc"] = $d["doc"];

if(!isset($arr[$d['date']])) {
$arr[$d['date']] = array();
}

if(!isset($arr[$d['date']][$d['n_trans']])) {
$arr[$d['date']][$d['n_trans']] = array();
}

array_push($arr[$d['date']][$d['n_trans']], $d['doc']);

}
echo '<pre>';
print_r(array_values($arr));
echo '</pre>';
?>

вот результат запроса, я пытаюсь изменить 2-й уровень ([32weds] => Array), удалить текст и поставить целое число наподобие ([0] => Array):

 Array(
[0] => Array(
[text] => 2018-11-01
[nodes] => Array(
[32weds] => Array(
[text] => 32weds
[nodes] => Array
(
[0] => 32.png
[1] => 32 (1).png
)

)

[qwerty] => Array
(
[text] => qwerty
[nodes] => Array
(
[0] => 5384a97ee9d6b (2).pd
)

)

)

)
)

без изменения формата массива.

0
По вопросам рекламы [email protected]