@Kirill-Gorelov
С ума с IT

Из одномерного массива в многомерный php?

Всем привет.
Есть одномерный массив массив
Array
(
    [0] => size:0.68| time :15| path :/var/cache/bind/managed-keys.bind
    [1] => size:0.5| time :15| path :/var/cache/bind/managed-keys.bind.jnl
)

Как мне его превратить в многомерный
Array
(
[0] =>
[size] => 0.68,
[time] => 15,
[path] => /var/cache/bind/managed-keys.bind
[1] => size:0.5| time :15| path :/var/cache/bind/managed-keys.bind.jnl
[size] => 0.15,
[time] => 15,
[path] => /var/cache/bind/managed-keys.bind.jnl
)

Делаю это там образом:
// вывожу все файлы
 exec("find / -type f", $out);
 // перебираю все файлы
 foreach($out as $name){
 //получаю время изменения файла
$vrema = 'получаю время изменеия файла';
// создаю нужный массив 
		$string[] =  "size:".round(filesize($name)/1024,2)."| time :". $vrema ."| path :".$name ;
		// разделяю строку для удобства
		$array2 = explode('|', $string);
		// далее формирую многомерный массив
		foreach($array2 as $str) {
		list($key, $value) = explode(':', $str);
        $array1[$key] = $value;
		}
	}
И так вывожу многомерный массив для одной строки.	
print_r($array1);

Как мне сделать правильно?
  • Вопрос задан
  • 1634 просмотра
Решения вопроса 2
@VisualIdeas
А зачем вы формируете сначала строку?
// вывожу все файлы
exec("find / -type f", $out);
// перебираю все файлы
$itogovij_array = array();
foreach($out as $name){
    //получаю время изменения файла
    $vrema = 'получаю время изменеия файла';
// создаю нужный массив
    $temp_array = array(
        'size'=>round(filesize($name)/1024,2),
        'time'=>$vrema,
        'path'=>$name,
    );
    $itogovij_array[]=$temp_array;
}
Ответ написан
Комментировать
BOOMER_74
@BOOMER_74
Full-Stack разработчик
А не проще было писать сразу так, без всяких разделений?
foreach($out as $name) {
    $array[] = [
        'size' => round(filesize($name)/1024,2),
        ...
    ];
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы