@CapitanFreeloader

Как обновить данные в ассоциотивном масииве массивов?

В общем суть такова приходить json массив внутри которого есть массивы и них тоже массивы.
Необходимо подменить каждую ссылку вложенного массива и вернуть json обратно
Делаю так:
foreach ($pays as $ke => &$va) {
	$avatar = (array)$va;
	foreach ($avatar as $key => &$value) {
		if($key == "avatar" or $key == "flag"){
			$path = $_SERVER['DOCUMENT_ROOT'].dirname(parse_url($value)['path'])."/";
			$file = basename(parse_url($value)['path']);
			if(!is_dir($path)){
				mkdir($path, 0777, true);
			} 
			if(is_dir($path)){
				file_put_contents($path.$file, file_get_contents($value));
				$newpath = dirname(parse_url($value)['path'])."/".$file;
				$value = $newpath;
			}
			$newpath = dirname(parse_url($value)['path'])."/".$file;
			$value = $newpath;
		}
	}
}

На уровне второго foreach все работает хорошо => замена происходит
Но когда я после всего этого хочу вывести получившияся результат (print_r($pays)) я вижу что ссылки не подменены, как быть?
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
@CapitanFreeloader Автор вопроса
Отвечаю сам себе:
foreach ($pays as $ke => &$va) {
	$avatar = (array)$va;
	foreach ($avatar as $key => &$value) {
		if($key == "avatar" or $key == "flag"){
			$path = $_SERVER['DOCUMENT_ROOT'].dirname(parse_url($value)['path'])."/";
			$file = basename(parse_url($value)['path']);
			/*if(!is_dir($path)){
				mkdir($path, 0777, true);
			} 
			if(is_dir($path)){
				file_put_contents($path.$file, file_get_contents($value));
				$newpath = dirname(parse_url($value)['path'])."/".$file;
				$value = $newpath;
			}*/
			$newpath = dirname(parse_url($value)['path'])."/".$file;
			$value = $newpath;
			echo "<br>$value";
		}
	}
	$va = $avatar;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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